【发布时间】:2020-03-01 02:52:09
【问题描述】:
我对 C++ 中的指针和数组有疑问。我不确定这部分代码到底在做什么。正如我看到的那样, iarray 被声明为普通数组。但是 q 像二维数组一样被访问。
int iarray[10];
int *p = iarray;
int **q = &p;
q[0][2] = 25;
如果我将 iarray 更改为:
int iarray[10]{3,2};
int *p = iarray;
int **q = &p;
q[0][2] = 25;
cout << q[0][0] << endl;
cout << q[1][0] << endl;
第一个将打印 3,正如我在上面声明的那样,我理解它。但是第二个是空白的,我不明白为什么。
【问题讨论】:
-
2 存储在
q[0][1],而不是q[1][0] -
请注意,取消引用
q[1]会导致未定义的行为。 -
问题是我确实知道它在做什么,但不知道如何以有意义的方式表达它。但基本上,它是在尝试构建一个事实上的二维数组,然后取消引用超出范围的内存。
标签: c++ pointers multidimensional-array