Ramos801 2022-06-27 22:20 采纳率: 85.7%
浏览 38
已结题

关于C语言的指针小问题

请问一下这个代码里的int p2=p;是正确的吗,为什么是和p2= &p的效果一样吗, 可以写成*p2=*p;吗

img

  • 写回答

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; 
    } 
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 7月6日
  • 已采纳回答 6月28日
  • 创建了问题 6月27日

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题