Ezio_八两神仙醋 2017-06-14 11:38 采纳率: 100%
浏览 846
已采纳

关于printf隐式与显式打印的区别

代码如下:

printf("*(int)ba+1 = %x\n",(int *)((int)ba+1));//?
int *ptr2=(int *)((int)ba+1);//表示a的存储单元的地址增加一个字节
printf("*ptr2 = %x\n",*ptr2);//

打印的效果完全不一样,有点不懂,有没有大神可以解释下。
打印为
*(int)ba+1 = 2129676341
*ptr2 = 2000000

  • 写回答

4条回答 默认 最新

  • 战在春秋 2017-06-14 12:31
    关注
      //打印的是 (int *)((int)ba+1)  这个指针本身的值
     printf("*(int)ba+1 = %x\n",(int *)((int)ba+1)); 
    

    而:

    //打印的是 ptr2  这个指针所指地址里面的内容
    printf("*ptr2 = %x\n",*ptr2);   
    

    所以结果完全不一样。

    用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!

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

报告相同问题?

悬赏问题

  • ¥15 如何实现从tello无人机上获取视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决