加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 03:41:11 所属栏目:百科 来源:网络整理
导读:拿这段代码: int a;int *pointer = a;int **b = ((*pointer)); 以上是否将b设置为指针的地址? 我问的原因是因为*指针给出了a的值,并且它的引用是a的地址.这被视为a的地址,还是被视为指针. 这有意义吗?我可以这样做: (*pointer) = a; 解决方法 在C中,您只
拿这段代码:
int a;
int *pointer = &a;

int **b = &(&(*pointer));

以上是否将b设置为指针的地址?

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

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

&(*pointer) = a;

解决方法

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

指针不是神奇的:最后,它们只是整数.因此,当你得到指针的指针时,它就像你得到一个整数的指针.它没有更多的反响.

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

int a;
int* p = &a;
p = NULL;

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读