int arry[3] = { 1,2,3 };
int * p = &arry[3];
for (int i = 0; i < 3; i++) {
p[i] = i + 1;
cout << p[i] << endl;
}
为什么p[i] 为啥等同于arry[i]
int arry[3] = { 1,2,3 };
int * p = &arry[3];
for (int i = 0; i < 3; i++) {
p[i] = i + 1;
cout << p[i] << endl;
}
为什么p[i] 为啥等同于arry[i]
指针后面加[i]效果就是相当于数组。不过,运行这段程序会得到一个内存存取越界的结果。因为指针p指向arry[2],而后面的循环相当于存取了arry[5],越界了!如果是 int * p = &arry[0]; 就没有问题。