嵌入式技术
如果你不太清楚int *和char *的区别,看完这道题,可能就会有所感悟。
一个字符数组a,初始化成:
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
short * int * int64 *
*p1就是取指针 p1 指向内存的值,但是并不能简单的认为结果是0x0102。也有可能是0x0201。
还好题目一开始说了,32位系统,小端字节序。
所谓小端,就是高地址保存高字节。
在数组里面,下标为 0 的元素一定是低地址,所以01应该就是低字节。
于是 *p1 是 0x0201。
*(p1 + 2)应该会跳过4个字节,刚才说了,short *类型的指针,加一会跳过2个字节。所以*(p1 + 2)的结果是0x0605。 p3因为指向了8个字节,所以*p3是0x0807060504030201。
最后一个*(p2 + 2),p2是int类型的指针,加2跳过了8个字节,表示的是最后4个字节的地址,取值的结果就是0。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !