为什么以下代码输出相同的地址?

时间:2018-08-04 03:06:47

标签: c arrays pointers

#include <stdio.h>
#include <stdlib.h>
int main() {
    char x[5] = {'h', 'e', 'l', 'l', 'o'};
    printf("x=%p", x);
    printf("\n&x=%p", &x);
    return 0;
}

第一条语句不应打印x [0]的地址,而第二条语句应打印x的地址,即数组x的地址

1 个答案:

答案 0 :(得分:2)

数组的地址该数组的第一个元素的地址。

事实上,该标准要求,除非在有限的情况下,否则数组将衰减到指向其第一个元素的指针。

x[n]的定义为*(x+n)-如果您将0用作n的值,则希望看到等价性