【发布时间】:2019-09-08 21:31:40
【问题描述】:
(自我回答的问答 - 这件事不断弹出)
我假设读者知道指针运算的工作原理。
int arr[3] = {1,2,3};
int* ptr = arr;
...
*(ptr + i) = value;
Teachers/C 书籍一直告诉我,我不应该像上面的例子那样使用 *(ptr + i),因为“指针支持数组样式索引”,我应该改用 ptr[i] = value;。那里没有争论 - 更容易阅读。
但是通过 C 标准,我发现没有所谓的“数组样式索引”。事实上,[] 运算符并不期望任一操作数是数组,而是指针或整数!
6.5.2.1 数组下标
约束
其中一个表达式的类型应为''指向完成对象的指针type'',另一个表达式应为整数类型,结果的类型为''type ''。
为什么 array 下标运算符不期望一个数组?标准错了吗?我的老师/C 书有问题吗?
【问题讨论】:
标签: c arrays pointer-arithmetic subscript-operator array-indexing