(自我回答的问答——这件事不断出现)
我假设读者知道指针算法是如何工作的。
int arr[3] = {1,2,3};
int* ptr = arr;
...
*(ptr + i) = value;
教师/C 书籍一直告诉我,我不应该*(ptr + i)
像上面的例子那样使用,因为“指针支持数组样式索引”,我应该使用它ptr[i] = value;
。那里没有争论 - 更容易阅读。
但是通过 C 标准,我发现没有什么叫做“数组样式索引”。事实上,运算符[]
并不期望任何一个操作数是一个数组,而是一个指针或一个整数!
6.5.2.1 数组下标
约束
其中一个表达式应具有类型''指向完整对象类型的指针'',另一个表达式应具有整数类型,并且结果具有类型''<em>type''。
为什么数组下标运算符不期望数组?标准错了吗?我的老师/C 书是否混淆了?