我不明白数组名称是如何指向数组的指针
I dont understand how an arrays name is a pointer to the array
im在C 中阅读一本书,我正在进行一些测试,因为我不了解某些内容,当我尝试打印这3行时,我期望所有的东西有所不同。在记忆指针的位置,第二个是由指针存储的地址,第三个地址,该值在指针存储的地址上的值。但是前两个是相同的:
cout <<&arey <<"n";
cout <<arey <<"n";
cout <<*arey <<"n";
输出:
0x6afee8
0x6afee8
0
有人可以解释为什么我已经读到数组的名称是阵列的指针,因此,如果是指针,则应该有自己的内存地址吗?
我不明白数组名称是如何指向数组的指针
不是。
我读到数组的名称是阵列的指针
谁写的是对你说谎的。
数组的名称是数组的名称。
有人可以解释为什么
在某些条件下(例如将其传递给函数(,它会自动(并透明地(转换为指针转换为数组的第一个元素。这是我们从c。
继承的不幸事实但是数组的名称仍然只是数组的名称。
so:
arey An array
&arey Address of the array
f(&arey) Passing the address of the array
f(arey) Still passing the address of the array (ish) - thanks a lot, C!
f(*arey) Passing the first element's value
现在考虑cout << x
实际上是cout.operator<<(x)
(即函数调用(,并解释您的输出。
如果是指针,它应该有自己的内存地址正确吗?
如果是指针,那么,是的。
轨道上的轻度竞赛答案:
因为这个问题被归类为C 问题,而不是普通C,因此也可能有以下内容。
现代C 建议使用std::array
来支持普通的C阵列。它没有成本,但更舒适(例如,在内存和尺寸中结合位置,甚至是编译时间界限(。
另请参见:STD :: Array和C 核心指南-STD :: Array
大多数操作都透明使用C阵列。
此外,更喜欢使用std::addressof
来支持&
(也可以与std::array
一起使用。
请参阅:std ::地址
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 如果我有一个固定大小的填充ascii数字的char数组,我知道它指的是一个无符号整数,那么将其转换为无符号整数的最快方法
- 指 2D 数组中的整行数组
- 动态对象数组在C++和Java中有何不同?
- 创建动态数组后,"i"变量不知从何而来
- 这些数组类型有何不同
- 在C++中,动态数组与静态绑定数组有何不同
- 通过指向int的指针对char数组进行别名合法吗
- 初始化数组与错置内存有何不同?