(常见问题解答-此问题不断出现)
我假设读者知道指针算法是如何工作的。
int arr[3] = {1,2,3};
int* ptr = arr;
...
*(ptr + i) = value;
Run Code Online (Sandbox Code Playgroud)
老师/ C书籍不断告诉我,我不应该*(ptr + i)像上面的示例那样使用,因为“指针支持数组样式索引”,而我应该使用它ptr[i] = value;。那里没有论据-更容易阅读。
但是从C标准来看,我什么都没有找到,叫做“数组样式索引”。实际上,运算符[]并不期望任何一个操作数都是数组,而是指针或整数!
6.5.2.1数组下标
约束条件
其中一个表达式的类型应为“完成对象类型的指针”,另一个表达式的类型应为整数,结果的类型应为“ type ”。
为什么数组下标运算符不期望数组?标准错了吗?我的老师/ C书困惑了吗?
c arrays pointer-arithmetic subscript-operator array-indexing