数组名和数组名的地址为何相等
int main() { int arr[] = { 0 }; printf("%p\n", arr); printf("%p", &arr); return 0; }
运行结果如下:0000007418AFF7640000007418AFF764
收起
数组名表示的就是arr数组首元素的地址,然后&arr表示的是整个数组arr,但是由于内存的访问都是一个字节为单位,所以这里&arr虽然意义上是整个数组,但是显示的结果与arr表示的一致。你再给数组增加几个元素,打印arr+1和&arr+1,会发现结果完全不同了。前者表示arr数组第二个元素的首地址,后者表示整个数组的下一个地址。一个+1跳过4字节,一个跳过整个数组
报告相同问题?