首页 > [C语言]刚看csapp就卡到了

[C语言]刚看csapp就卡到了

typedef unsigned char *byte_pointer;

void show_bytes(byte_pointer start,int len)
{
    int i;
    for(i=0;i<len ,i++;)
        printf("%.2x",start[i]);
    printf("\n");
}
int main()
{
    int val = 0x87654321;
    byte_pointer valp = (byte_pointer)&val;
    show_bytes(valp,3);
    getchar();
    return 0;
}

这是《深入理解计算机系统》练习题2.5
我不理解的是 byte_pointer valp = (byte_pointer)&val;不是取地址操作吗,那么valp中的值应该是val的地址吧,可结果却是输出21 43 65这不是val的值吗


下标运算也是指针操作的一种。start[i]等价于*(start + i)。所以输出的是值而不是地址。


(byte_pointer)&val相当于把int强制转换成了unsigned char*数组。。这样好理解了吧?

【热门文章】
【热门文章】