永发信息网

p是指针变量,*p=a和p=&a的区别

答案:5  悬赏:20  手机版
解决时间 2021-03-31 09:47
p是指针变量,*p=a和p=&a的区别
最佳答案
分清是语句里还是声明里。
声明 里 int *p=a; 声明 *p 是 int 型指针,初始化,让 p 指向 a [数组] 的始地址。
声明 里 int p=&a; 声明 p 是 int型变量,不是指针,初始化,把变量 a 的地址 &a 赋给 p.
语句里,若 p 是指针变量,
*p=a; *p 表示 值,把 变量 a 的当前值 赋给 指针。(指针指向的地址不变)。
p = &a; p 表示指向的地址, 把 变量 a 的地址 &a 赋给 p, 也就是让指针指向 变量 a。

例如:
int a=2, b=3;
int *p=&b; // 指针指向地址 初始化, 指向 b
printf("address: %p value:%d\n", p, *p); //输出地址同 b, 数值 3
*p=a;
printf("address: %p value:%d\n", p, *p); //输出地址同 b, 数值 2
p= &a;
printf("address: %p value:%d\n", p, *p); //输出地址同 a, 数值 2
---------------------
全部回答
区别很明显,*pa=a,*pb=b只是说内存pa位置存放的值是等于a并不是pa指向变量a的地址单元,因此输出的地址是不一样的。
最关键的错误在pa和pb这两个指针没有初始化,
当执行*pa=a;*pb=b;时结果不可预期, 很可能程序应崩溃掉的.
这段代码在一些编译器是编译不过的,因为你没有给pa,pb赋值,pa,pb两个指针指向哪里,根本不知道
*p=a 和 p=&a是完全不同的两码事
*p 是 p 指向的地址的值,改变了值不是改变了它的地址,而p=&a就是改变p所指向的地址,使之指向a
举个例子说明一下
p=&a; //p保存的是a的地址
*p=b; //并不是p保存了b的地址,而是将b的值保存到p所指向的地址的那个值,这句相当于a=b,最后改变了a的值,而非p所指向的地址
1
*p=a; //表示将a的值赋给p所指单元。
p=&a; //表示将p指向a单元,即将a单元的地址赋给p。
2
int a,b;
int *pa,*pb;
a=10;b=20;
*pa=a;*pb=b; //这两个语句有问题。pa,pb是野指针,没有指向任何单元。
printf("%d,%d\n",*pa,*pb);
printf("%x,%x\n",pa,pb); //pa,pb的野指针,其值不确定。
printf("%x,%x\n",&a,&b); //输出a,b的地址。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天津听相声的地方?
羊蹄根的介绍
尤溪县台溪计生办电话是多少?
防水桥架是不是就是指托盘式热镀锌密闭桥架?
坐月子有30多天了,现腰疼厉害,怎么处理
求基于STC89c52单片机做超声波测距仪程序
日语,【必须…还要】怎么说?【装修,必须高
认贷是包含提取公积金吗
洛奇的埃文的火剑怎么获得?
最后一次演讲表现闻一多先生的 什么精神 什么
为什么眼皮老是累总是想睡觉
车碰掉了漆,多少钱修理啊
化学与生活密切相关,生活中常见的现象属于物
刚从外地回来,想做个四维,这哈尔滨哪能做啊
2015年田家炳中学录取分数线是多少
推荐资讯
婚床做成了两米乘两米打是否不吉利?有家住这
请问,发码,扁娃,是青海话吗?究竟是什么意
橄榄树象征着什么啊
《罪宠》txt全集下载
为什么来例假这几天心情会烦躁
C语言将一个小数四舍五入的问题
养一百只牛要多少钱养牛10只一年能赚多少
中国平安财产保险股份有限公司云南分公司武定
门上放多少根艾草合适
桑叶虽柔解吐丝里的解是什么意思
同步带跟带轮的关系,一个同步带可以配上多个
向量问题 向量u为9 v为7 求 u+v的大小。求详
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?