代码如下:
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
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
//打印的是 (int *)((int)ba+1) 这个指针本身的值
printf("*(int)ba+1 = %x\n",(int *)((int)ba+1));
而:
//打印的是 ptr2 这个指针所指地址里面的内容
printf("*ptr2 = %x\n",*ptr2);
所以结果完全不一样。
用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!