说,我定义了一个数组:
int a[5];
和
a = &a[0];
是数组开头的地址。
我的问题是,a
是否像指针变量一样存储在内存中?
如果是这样,当我尝试打印a
(&a
)的地址时,为什么我会获得与a
相同的值?
答案 0 :(得分:1)
当您声明一个数组时,唯一留出的存储是数组元素本身;没有存储指向第一个元素的指针。
当编译器看到的数组表达式不是sizeof
或&
运算符的操作数时,或者不是用于在声明中初始化另一个数组的字符串文字时,它将将数组表达式转换为指针表达式,指针表达式的值将是数组中第一个元素的地址。