我开始学习C++了.我遇到了关于指针的小混乱,特别是NULL指针.根据我的理解,当您声明指针并将其设置为指向值时,您可以执行以下操作:
int var = 10;
int *ptr;
ptr = &var;
*ptr = 20;
Run Code Online (Sandbox Code Playgroud)
这会将var的值更改为20.但是当您设置NULL指针时,您将执行以下操作:
int *ptr = NULL;
Run Code Online (Sandbox Code Playgroud)
这是不是意味着你将值NULL分配给ptr指向的任何变量而不是地址,因为*运算符?我认为一个NULL指针的值(它的地址)为0,所以它从我读到的地方找不到任何地方.这样做会更有意义吗:
int *ptr;
ptr = NULL // or 0?
Run Code Online (Sandbox Code Playgroud)
外行术语的解释将不胜感激,我仍在学习所有的术语,因为我编码和研究,所以我喜欢你使用的任何编程术语的解释.
通过说int *ptr = NULL;你说"我正在声明一个名为int的指针ptr,我想指向位置0(NULL).这就是它所说的.
现在,如果你试图读或写ptr你将得到未定义的行为,这通常是一个可怕的地方(更糟糕的是只是得到一个错误,因为你的程序可能开始在其他地方遇到问题,你不知道为什么).但通常,NULL当您想要表示不应该使用指针并且必须初始化时,会使用指针.
正如大卫施瓦茨所说,
如果您使用
int* ptr而不是,将更容易理解int *ptr.
这是因为类型ptr实际上int*是指向整数的指针.声明类型时,*表示指针.它的表现形式,如使用指针时仅*ptr = 20将*意味着"解引用".
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |