【发布时间】:2014-10-10 05:20:41
【问题描述】:
据我所知,在某些情况下,数组会被转换为指向其第一个元素的指针:
int a[5];
int * p;
p = a;
按照这种方法并考虑到我可以将数组分配给指针,为什么我不能将二维数组分配给指向指针的指针?
int a[5][5];
int ** q;
q = a;
但是,我可以将指针数组分配给指向指针的指针:
int * p[5];
int ** q;
q = p;
如果将数组转换为指向其第一个元素的指针,则在第二个示例中发生 q = a 时,a 应该是指向 a[0] 的指针,a[0] 应该是指向 a[0] 的指针[0],对吧?
此外,如果我这样做,我不会收到错误:
cout << **a;
提前致谢,希望您能帮助我理解。
【问题讨论】:
-
数组不是指针(在某些情况下它会衰减到它 _ 即函数调用)。同样,二维数组不是指向指针的指针。二维数组不是指针数组,它们也不同
-
您不能分配它,因为您不仅要对变量进行分配,而且还要分配大小为 [5][5] 的内存。您为指针或 int **q 的指针分配内存的方式不同。您首先像这样分配内存: int **q = new int *[5]; for(int i= 0; i