c – 指针的指针和运算符的地址如何工作?

前端之家收集整理的这篇文章主要介绍了c – 指针的指针和运算符的地址如何工作?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
拿这段代码
int a;
int *pointer = &a;

int **b = &(&(*pointer));
@H_301_4@以上是否将b设置为指针的地址?

@H_301_4@我问的原因是因为*指针给出了a的值,并且它的引用是a的地址.这被视为a的地址,还是被视为指针.

@H_301_4@这有意义吗?我可以这样做:

&(*pointer) = a;

解决方法

在C中,您只能获得指向存储区域的指针(这意味着变量,数组元素或其他指针;它们称为“l值”),而不是任何表达式.您无法获得指向没有定义存储区域的表达式的指针(如添加函数调用的结果).但应该注意的是,C将这些规则与参考文献混淆,但为了清楚起见,我将其排除在外. @H_301_4@指针不是神奇的:最后,它们只是整数.因此,当你得到指针的指针时,它就像你得到一个整数的指针.它没有更多的反响.

@H_301_4@例如,如果在代码中获得指向a的指针,则只需将该地址复制到另一个变量中即可.没有什么可以阻止你改变所述变量:

int a;
int* p = &a;
p = NULL;
@H_301_4@这样做,你将保持不变.所有你可以改变的是它的价值.它的地址是不可变的.任何其他东西都意味着& a = NULL(或任何其他指针值)将起作用,但事实并非如此.

猜你在找的C&C++相关文章