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

标签 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. &ar是数组的地址,其类型是“指向三个整数的数组的指针”。

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

  3. 打印指针时,除了 charunsigned charsigned char 之外的指针,指针都会转换为“指针”作废”。

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

关于c++ - 指针和指针的地址如何共享相同的内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53132022/

相关文章:

c++ - Qt5.11应用程序插件构建错误: Signal and slot arguments are not compatible

c++ - open() 的参数 : Everyone should have all access to file & should be truncated on creation

我可以将字符串传递给 fopen() 吗?在 c

javascript - 在javascript中分割数字以不同的字体大小显示小数点之后和之前的数字

c - C语言中的"Wave Algorithm"(基于Lee算法)

c++ - stat64 在 64 位 ubuntu 上返回 32 位 st_size

c++ - 如何在Windows上调用ELF函数

c - 如何在我的项目中用C调用别人开源专有项目的函数

用于 C 程序的 C# GUI

c++ - 使用动态数组的简单地址簿