Ansi C:数组的名称存储为指针变量吗?

时间:2015-08-28 18:04:49

标签: c arrays addressof

说,我定义了一个数组:

int a[5];

a = &a[0];

是数组开头的地址。

我的问题是,a是否像指针变量一样存储在内存中? 如果是这样,当我尝试打印a&a)的地址时,为什么我会获得与a相同的值?

1 个答案:

答案 0 :(得分:1)

当您声明一个数组时,唯一留出的存储是数组元素本身;没有存储指向第一个元素的指针。

当编译器看到的数组表达式不是sizeof&运算符的操作数时,或者不是用于在声明中初始化另一个数组的字符串文字时,它将数组表达式转换为指针表达式,指针表达式的值将是数组中第一个元素的地址。