在这段代码中,我读到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;
答案 0 :(得分:4)
&ar
是数组的地址,其类型是“指向三个整数的数组的指针”。
ar
,当传递给ostream时,将衰减为指向其第一个元素的指针,该元素的类型为“整数指针”。将其分配给相应的指针时也会发生同样的情况。
在打印指针时,除指向char
,unsigned char
和signed char
的指针外,指针将转换为“指向空指针”。
总而言之,打印数组或打印第一个元素的地址会产生相同的输出,因为数组的地址也是第一个元素的地址。它们的类型不同,但这无关紧要,因为它们仍然会转换为void。