自己动手给指针加 1,结果就看不懂*p 了
//代码在最下边在我这台机子加我这个编译器上,sizeof(3)的值是4,就是整型数据占4字节。
按我的理解,a[0]在内存中占32位,数值是1,就是前31位都是0,然后1个1;
a[1]在内存中占32位,前30位是0,后面跟2个1;
*p就是取a[0]的后24位加a[1]的前8位,结果是100000000b,就是256,怎么显示就成了33554432了呢?
求大神解答,一定是我有什么地方搞错了。
程序代码:
#include <stdio.h> #include <stdlib.h> int main(){ int a[3] = {1, 2, 3}; int *p = a; p = 2686721; //因为之前用printf显示出p的值是2868720,所以这里给他加上1 printf("%d", *p); //程序运行到这里显示结果33554432,是1后面跟25个0的二进制数 return 0; }