C++ 解引用数组

标签 c++ arrays dereference

我从未读过任何有关取消引用数组(如指针)的内容,我认为它不应该起作用。但以下代码在使用 QT Creator 和 g++ 4.8 时确实有效:

int ar[9]{1,2,3,4,5,6,7,8,9};
cout << *ar << endl; //prints the first element of ar

这是正确的行为还是只是编译器修复了代码?

最佳答案

您不能解引用数组,只能解引用指针。

这里发生的是,在大多数上下文中,数组类型的表达式被隐式转换为(“衰减”为)指向数组对象第一个元素的指针。所以ar“衰减”为&ar[0];为您提供 ar[0] 值的取消引用,它是一个 int

This recent answer of mine针对 C 对此进行了一些详细讨论。C++ 的规则类似,但 C++ 还有一些不发生转换的情况(您的代码中都没有发生)。

关于C++ 解引用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17533128/

相关文章:

c++ - Make - "Treat warning as error"对于特定文件

c++ - Visual Studio 2010 : Linker > Command Line contains unneeded . 库

php - 如何显示特定的数组组合?

c - 在 C 中取消引用本地数组

c++ - 解除引用的指针或迭代器的类型是什么?

C - 取消引用指向不完整类型的指针 - 将字符串插入二叉搜索树

c++ - QT:qmake 无法识别 3dcore、3drender

c++ - string_view 到 const 引用字符串变得无效

java - 使用循环自动填充和数组,无需提示。

c - C中的初始化字符串