int* q[5];是一个存放指针的数组(通常叫指针数组)
A是一个存放int型数组;
B是一个int型指针;
C是一个存放指针的数组;
D一个指向指针数组的指针,是一个变量,而不是数组。
故选C。
数组指针是指向数组地址的指针,其本质为指针;指针数组是数组元素为指针的数组(例如 int *p[3],定义了p[0],p[1],p[2]三个指针),其本质为数组。数组指针的使用在某些情况下与指针数组很相似,要注意区别。
扩展资料:
数组指针和指针数组的区别:
1、数组指针,定义 int (*p)[n]:
“()”优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。
2、指针数组,定义 int *p[n]:
[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素,这样赋值是错误的:p=a;
因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。
AB显然不对,这个没有什么好解释的。
int *q[5] 表示五个元素都是int 类型的指针
而 int (*q)[5] 表示每个元素都是指向一个拥有5个int元素的指针
所以D不对
C只是换了一种写法而已。
int* q[5];是一个存放指针的数组(通常叫指针数组)
A是一个存放int型数组
B是一个int型指针
C同
D一个指向指针数组的指针,他是一个变量,而不是数组