c - 为什么 &p+1 给出与 p 相同的结果

标签 c

    #include <stdio.h>
    int main(void)
    {
        int a[]= {15, 14, 34, 46, 69, 86, 10, 0, 4};
        int *p = a; // p point to the first element of array a[0]
        printf("%x\n%x\n",&p+1, &a[0]);
        return 0;
    }

该代码将作为示例打印

bff0e554
bff0e554

所以 &p+1 返回数组第一个元素的地址。 据我了解,&p 返回该指针的地址,&p+1 应该打印指针的地址 + 1 请告诉我我错过了什么!!

最佳答案

&p 获取 p 的地址,而不是 p 的值。这对你来说 &p + 1 == a 纯属巧合,取决于你的堆栈对齐方式。您的编译器可能已将这两个变量按其他顺序排序或在两者之间留出空隙。

关于c - 为什么 &p+1 给出与 p 相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34206137/

相关文章:

c - 为什么c语言编码会出现运行时错误?

php - PHP 与 C 中的箭头运算符

c++ - 需要分析帮助

c - 在这种情况下计算机如何知道是使用静态链接还是动态链接

c - ".global"的宏定义

c - C程序中字符串的反转?

c - setjmp 和 GCC 的合法使用

c - 用于测试、报告或调试的 GLib/GObject 拦截错误/结构代码

c - scanf 正在使用未初始化的变量; C

使用 pthreads 创建 makefile