数组下标运算符 ([ ]) 对数组有什么作用?
What does the array subscripting operator ([ ]) do to an array?
我想知道数组下标运算符([]
(对对象做了什么
从这个问题和这个问题中,我了解到[]
运算符获取对象的地址,将括号之间的任何内容添加到对象中,最后取消引用总和以获得地址。但是,在数组声明中,例如。
int iarr[] = {1,2};
int iarr2[2] = {1,2};
[]
运算符似乎没有将括号中的值添加到操作数中,尤其是在第二个示例中。相反,它似乎赋予了对象存储数组的能力。
另外,我的疯狂猜测是,在int arr2[2] = {1,2}
,arr[2]
将为两个int
分配内存。这是真的吗?
总结一下:
[]
运算符在声明期间对其操作数执行什么操作?它只是赋予对象存储数组的能力,还是为数组分配内存?
[]
仅在应用于表达式时才是运算符。
(同样的原则适用于&
和*
。
在声明中,它是类型的一部分,除了指定声明的变量是一个数组之外,并没有真正"做"任何事情。
您混淆了[]
运算符和声明数组的语法。
int iarr2[2] = {1,2};
声明一个名为 2 个整数的iarr2
个数组,然后将数组的元素初始化为 1 和 2。它不应用[]
运算符。
这个:
int iarr[] = {1,2};
表示定义一个数组,其大小将在初始化列表中产生大量元素。
另一方面:
int iarr2[2] = {1,2};
表示定义一个双元素数组并将其初始化为1
和2
您还可以执行以下操作:
int iarr2[4] = {1,2};
表示定义一个四元素数组并将前两个元素初始化为1
和2
。其余元素初始化为:0
相关文章:
- 通过JNI传递数据数组的最快方法是什么
- 讨论 - 创建矩阵时的数组与向量的向量 - 什么是最实用的选择
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 当 std::move 与 C 样式数组或不移动对象时会发生什么
- 当该数组的索引中没有元素时,指针指向什么?
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 从字符数组的元素中减去'a'是什么意思
- 这种用于查找连续子数组中最大和的递归算法有什么优势吗?
- 字符数组前面的加号是什么意思?
- 初始化数组、"memset"或" {//value} "的最佳方法是什么?
- 在C++中,建议通过数组循环的方式是什么?
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- C++数组中的初始值设定项是什么?
- 如果我在字符数组上使用 close() 会发生什么?
- 指向数组基址的指针而不是指向第一个元素的指针有什么优点?
- 使用STL对用户输入数组进行排序的错误有什么解决方案吗?
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- 初始化不是整数的巨大常量多维数组的最佳方法是什么?
- 我在 2D 数组的动态内存分配中遇到了一些奇怪的代码C++? 请解释一下这是什么?
- 将 std::unique_ptr 重置为指向数组的指针有什么问题?