【C】关于指针和内存地址

请问这段代码的输出值为什么是 2 00 00 00


    int a[4] = { 1,2,3,4 };
    int* p = (int*)((int)a + 1);

    printf("%x", *p);

你这不报段错误?32位环境吗

img

*p打印的就是值了,16进制的2也是2,所以最终结果为2
你是想看地址打印的话是printf("%x",p)
一开始p的地址为数组a的开头,然后以int类型对p+1,此时指向的就是数组中的第二个元素,对应的值为2
有帮助望采纳

是int *p

为什么好多人的*总和int粘在一起