【发布时间】:2019-10-14 19:49:39
【问题描述】:
我想知道数组下标运算符 ([]) 对对象做了什么
从this question 和this question 中,我了解到[] 运算符获取对象的地址,将括号之间的任何内容添加到对象中,最后取消引用总和以获得地址。但是,在数组声明中,例如。
int iarr[] = {1,2};
int iarr2[2] = {1,2};
[] 运算符似乎没有将括号中的值添加到操作数中,尤其是在第二个示例中。相反,它似乎赋予了对象存储数组的能力。
另外,我的猜测是在int arr2[2] = {1,2} 中,arr[2] 将为两个ints 分配内存。真的吗?
总结一下:
[] 运算符在声明期间对其操作数做了什么?它只是赋予对象存储数组的能力,还是为数组分配内存?
【问题讨论】:
-
[]的含义取决于上下文,但在您的情况下它不是运算符。这是声明或初始化数组的语法。 -
请记住,C++ 使用Context-sensitive grammar。相同的符号在不同的上下文中通常意味着不同的事物。