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);
所以结果完全不一样。
用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!
我想做的是不使用指针而取出指针指向地址内的值。而我的理解是:既然ptr2这个指针是存放前面((int)ba+1)的地址,那么使用(int *)((int)ba+1))应该就是其地址内的值,但是不凑巧的是我好像使用了指针的定义来操作常量,那么我打印的仍然是地址?
具体是这样的:
int ba[4]={1,2,3,4};
int *ptr2=(int *)((int)ba+1);
printf("*ptr2 = %x\n",*ptr2);
打印为:
*ptr2 = 2000000
我的操作系统为小端序。请问下这个*ptr2为什么是2000000
其实就是测试一下地址内存放的值是什么