当我试图理解指向这个数组的指针时,遇到了一个奇怪的问题。
#include <iostream>
int main() {
using namespace std;
short tell[3]{1, 2, 3};
short (*pas)[3] = &tell;
cout << (*pas)[2] << endl;
cout << *pas[2] << endl;
cout << endl;
return 0;
}
这两个输出给出了不同的值。
第一个输出是正确的,为3。
然而,对于第二个输出,似乎返回一个随机数,每次都不同。
这两者之间有什么区别?
pas [0] [2]
,第二个等同于pass [2] [0]
。 - Marek R-Wall
启用警告即可。您将会得到以下警告信息:"warning: array subscript 6 is outside array bounds of 'short int [3]' [-Warray-bounds] 11 | cout << *pas[2] << endl;" - JHBonarius