指针和指针的地址如何共享相同的内存地址?

时间:2018-11-03 13:58:32

标签: c++ c arrays pointers memory-address

在这段代码中,我读到ar等同于&ar[0],因此我们可以在使用指针的同时编写int* pointer = ar;。看来ar是指向ar[0]。那么&arar如何相同? ar不是指向ar[0]的指针,&ar是指针ar的存储位置吗?

int ar[3] = {1,2,3};
cout<<ar<<endl;
cout<<&ar<<endl;

1 个答案:

答案 0 :(得分:4)

  1. &ar是数组的地址,其类型是“指向三个整数的数组的指针”。

  2. ar,当传递给ostream时,将衰减为指向其第一个元素的指针,该元素的类型为“整数指针”。将其分配给相应的指针时也会发生同样的情况。

  3. 在打印指针时,除指向charunsigned charsigned char的指针外,指针将转换为“指向空指针”。

总而言之,打印数组或打印第一个元素的地址会产生相同的输出,因为数组的地址也是第一个元素的地址。它们的类型不同,但这无关紧要,因为它们仍然会转换为void。