首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求指点一个关于指针的题目。

2013-03-12 
求指导一个关于指针的题目。。#include stdio.hint main(void){unsigned int a[3] {0x01020304, 0x05060

求指导一个关于指针的题目。。
#include <stdio.h>

int main(void)
{
    unsigned int a[3] = {0x01020304, 0x05060708, 0x090a0b0c};
    unsigned int *p = (unsigned int *)((int)a +1);
    printf("%x/n", *p);

    return 0;
}

为什么得到的是08010203 而不是08啊?
编译器怎么识别的啊
[解决办法]
小端序
你这个例子内存低到高字节是:
4 3 2 1, 8, 7, 6 ,5 
a+1指向3红色当一个int,在小端序中就是8123

[解决办法]
因为数组地址是连续的。所以它把0x08所在地址的后面三个字节的数据都打印出来了。
[解决办法]
unsigned char *p = (unsigned int *)((int)a +1);

热点排行