请问&*p等于*&p?这两个怎么理解不是说&*这两个是互为逆运算的关系么?如果是这样&*p和*&p的
答案:2 悬赏:50 手机版
解决时间 2021-02-06 13:38
- 提问者网友:树红树绿
- 2021-02-06 03:13
请问&*p等于*&p?这两个怎么理解不是说&*这两个是互为逆运算的关系么?如果是这样&*p和*&p的
最佳答案
- 五星知识达人网友:鱼忧
- 2021-02-06 03:52
&和*在c/c++里用法较多,用在不同的地方,意思不同.* 用于语句里的指针变量时,表示指针指向的值.例如:printf(%d,*p);&用于语句里的普通变量时,表示求普通变量的地址.例如:int a; p=&a;“&*p等于*&p“ -- 是用于指针变量.例如:声明:int a=1; int *p=&a;语句:printf(%x %x ,&*p,*&p); 这里 &*p 和 *&p 都等于 p,也就是 p 指向的 变量的地址,这里 正好 都等于 变量 a 的 地址.------------------来段程序:#include#include main(){int a=2,b=3;int *p; // 声明了,但没有初始化printf(%x\n,*p); // 没有初始化就使用,有警告性错误,没关系,继续跑.printf(a:%p\n,&a); // 打印 a 地址printf(b:%p\n,&b); // 打印 b 地址printf(p:%p\n,&*p);printf(p:%p\n,*&p);p = &a; // p 指向 aprintf(%x\n,*p); // p 指向的值printf(a:%p\n,&a);printf(b:%p\n,&b);printf(p:%p\n,&*p); // 注意地址 等于 a 的地址printf(p:%p\n,*&p); // 注意地址 等于 a 的地址p=&b; // p 指向 bprintf(%x\n,*p);printf(a:%p\n,&a);printf(b:%p\n,&b);printf(p:%p\n,&*p); // 注意地址 等于 b 的地址printf(p:%p\n,*&p); // 注意地址 等于 b 的地址}===可见 “&*p等于*&p“ 等于 p.我们可以把 &*,*& 理解成 是合在一起的 1 个符号.都 表示 指针指向的当前 地址.你硬要分开理解就是:*p 是指针指向的值,&*p 是指针指向的值的地址,也就是 指针指向的当前 地址.马马虎虎可以理解.&p 是指针自己的地址,*& 难以理解了.
全部回答
- 1楼网友:往事隔山水
- 2021-02-06 04:22
这个问题的回答的对
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯