运算符[]的正确输入数据类型是什么?

zzt*_*ops 4 c memory arrays

访问数组时,我们使用运算符,[]如下所示:

int a[5];
...
a[b] = 12;
Run Code Online (Sandbox Code Playgroud)

b上面变量的正确数据类型是什么?

我发现这a[b]相当于*(a + b),这让我觉得我想b成为void*或者size_t但是,我不确定.

Jey*_*ram 5

从C标准(ISO/IEC 9899:TC2)Sec 6.5.2.1数组下标

后缀表达式后跟方括号中的表达式[]是数组对象元素的下标名称.下标操作符的定义[]E1[E2]相同(*((E1)+(E2))).由于适用于binary +运算符的转换规则,如果E1是数组对象(等效地,指向数组对象的初始元素的指针)并且E2是整数,则E1[E2]指定E2-th 元素E1(从零开始计数).