请问一下这个代码里的int p2=p;是正确的吗,为什么是和p2= &p的效果一样吗, 可以写成*p2=*p;吗
5条回答 默认 最新
- a5156520 2022-06-27 22:46关注
下面是我的理解,仅供参考:
请问一下这个代码里的int p2=p;是正确的吗
---->
(int *p2) = p 这个是正确的,因为p和p2都是int型指针,对其赋值是正确的。
为什么是和p2= &p的效果一样吗
---->
p2是不能赋值为&p的,因为&p是int型指针的指针,而p2是int型指针,二者类型不匹配。
可以写成(*p2)=(*p);吗
---->
(int *p2)=(*p); 是不可以的,因为定义时赋值,p2代表指针,(*p)代表一个int值,二者类型不匹配。
先定义了(int *p2;) ,然后在赋值也不可以,(*p2)没有指向某个int型数据 , p2就是一个野指针,对其赋值为(*p)会产生难以预料的结果。
下面是测试的例子:#include <stdio.h> int main(void){ printf("Hello, world!\n"); int a=22; int *p = &a; *p=24; int b=1; int *p2 = &b; *p2=*p; int **p3=&p2; (*p2)--; (**p3)-=10; printf("%d %d %d\n",a,*p,*p2); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
- ¥30 深度学习,前后端连接
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀
- ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
- ¥15 关于#hadoop#的问题