C / C ++指向1D数组变量的指针

时间:2016-12-22 02:26:43

标签: c++ c arrays pointers

请考虑以下代码段:

int x[] ={10,20,30,40,50};
int *p;
int **q;

p = x;    /* Obviously p now holds base address of array. So no problem here */ 
q = &x;   /* Error. Why? */

我在gcc编译器中收到此错误。

error: cannot convert ‘int (*)[5]’ to ‘int**’ in assignment q = &x; 

数组变量可以被视为指向数组第一个元素的常量指针。那么为什么我不能将常量指针的地址,即& x分配给指针变量q?

的指针

1 个答案:

答案 0 :(得分:2)

数组在某些上下文中衰减为指针,例如赋值,或将其传递给函数。

address-of运算符&不会将数组衰减为指针。就这么简单。相反,你得到一个指向数组的指针。在这种情况下:

int (*q)[5];

q= &x;  // Works just fine