在这段代码中,我读到 ar
相当于 &ar[0]
,所以我们可以写 int* pointer = ar;
在使用指针时。似乎 ar
是指向 ar[0]
的指针。那么怎么样&ar
和ar
可以一样吗?不是ar
指向 ar[0]
的指针和&ar
是指针ar
的内存位置?
int ar[3] = {1,2,3};
cout<<ar<<endl;
cout<<&ar<<endl;
最佳答案
&ar
是数组的地址,其类型是“指向三个整数的数组的指针”。ar
,当传递到 ostream 时,会衰减为指向其第一个元素的指针,该元素的类型为“指向整数的指针”。当它被分配给相应的指针时,也会发生同样的情况。打印指针时,除了
char
、unsigned char
和signed char
之外的指针,指针都会转换为“指针”作废”。
总之,打印数组或打印第一个元素的地址会生成相同的输出,因为数组的地址也是第一个元素的地址。它们的类型不同,但这无关紧要,因为它们无论如何都会转换为 void。
关于c++ - 指针和指针的地址如何共享相同的内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53132022/