【发布时间】:2022-12-02 22:22:24
【问题描述】:
比如下面的代码,我知道p是一个指针,它指向arr数组的第一个元素,我也知道这个数组会退化为certain conditions下的数组,但是为什么可以对这里的指针进行[]操作吗?
#include<iostream>
using namespace std;
int main()
{
int arr[10];
arr[3] = 10;
int* p = arr;
cout << p[3];
return 0;
}
有这方面的文件吗?
run it online
【问题讨论】:
-
当然有文档,C++ 由 C++ 标准记录。相关引用:eel.is/c++draft/expr.sub#2.sentence-5。重要部分:“表达式
E1[E2]等同于(根据定义)*((E1)+(E2))...”. -
这至少可以追溯到 B 语言(1969 年)。