首页 > 试题广场 >

int x[6][4],(*p)[4];p=x; 则*(

[单选题]
int x[6][4], (*p)[4];
p = x;
则*(p+2)指向哪里?
  • x[0][1]
  • x[0][2]
  • x[1][0]
  • x[2][0]
p是指向int[4]类型的指针,p = x,指向x的首地址。
p+2,即加上2个指向类型的大小,即2 * 4 = 8个int,所以*(p+2)指向x[2][0]
发表于 2015-07-30 10:06:20 回复(1)
x为二维数组,p是一个数组指针,将p指向长度为4的int数组,那么p指向的元素是x的第一行元素的首个,p+2指的就是第三行的首个元素,所以p[2]所指即为x[2][0]
编辑于 2015-03-05 09:40:49 回复(9)
D. x[6][4]可以认为是(*x)[4],然后 (*p)[4]:p=x;所以*(p+2)指向 x[2][0],而(p[0]+2)指向了x[0][2]。
发表于 2014-12-30 14:09:00 回复(9)
数组指针(*p)[4]  --》数组的指针 P指向一个数组,步长为4,指针每加1 就会跳过4个元素
发表于 2016-06-01 10:18:20 回复(1)
p是int型数组指针,如果只是int指针,则加2指向第一行第二。但是这里是数组指针,数组里面有4个int型,指针加2相当于加了8个int
发表于 2017-06-05 20:18:26 回复(0)
选择D:
p是一个数组指针,指向一行为10个元素的数组。
所以p自增或者加1,都是讲数组增加一行。
发表于 2015-09-02 16:30:18 回复(2)

x的类型为int[6][4],是一个数组,空间大小为sizeof(int)*4*6。
p的类型为int(*)[4],是一个指向长度为4的数组的指针,32位程序的指针为4字节。
*p的类型为int[4],是一个数组,空间大小为sizeof(int)*4。

既然*p是一个数组,若出现在表达式中,又会从int[4]转换为首元素指针,即int *类型。p可以看作是一个指向指针的指针。
所以*(p+2)指向的是x[2][0]的地址,*(*(p+2))指向的才是x[2][0]。


发表于 2022-02-21 21:21:30 回复(0)
指针加法,是和指针所指对象相关的,如果是一个指向整型的变量,那么加1,就是加一个整型所占的大小。此处的p是一个指向整型数组的一个数组,所以p+2,就是增加2倍的数组元素个数*元素类型的大小,p = x,p指向二维数组的首地址,所以p + 2,就是指向二维数组的第三行。
发表于 2016-05-18 17:39:45 回复(0)
p为数组指针,步长为四,加2则跨两个整型的大小。
发表于 2023-05-16 14:33:53 回复(0)
int (*p)[2]; //是一个列数为2,行数不确定的二维数组,同 int p[][2];
int *p[2];  //是一个行数为2,列数不确定的int指针数组,它的每一个元素表示一个int指针

发表于 2021-06-30 11:05:33 回复(0)
p即是行指针,等同(*(p+2))[0]
发表于 2021-05-28 10:20:44 回复(0)
p的类型是int(*)[4], p指向的类型是int[4], 所以p+1的步长是4个int,也就是一行
发表于 2020-05-17 19:14:46 回复(0)
int (*p)[4]数组指针,即一个指针,该指针指向大小为4的数组,p+2,即地址移动2*(int)4
int *p[4]数组指针,一个数组,该数组保存了四个指针,该指针大小就是一个int
发表于 2017-05-06 16:41:51 回复(0)
为什么是*(p+2)呢?带个*不是变成了指向的值了吗?应该不带星才是指向a[2][0]的指针吧?
发表于 2017-03-27 22:17:41 回复(0)
 D  int *p[4] 是一个数组指针,指向长度为4的数组,所以P+2移动了2×4个int ,*(P+2)指向X[2][0]
发表于 2016-12-01 18:00:42 回复(0)
int *p[8]是指针数组,因为[]优先级比*高,所以实际是p[8]数组,(int*)类型。
int (*p)[8]是数组指针,很明显p是指针,即p是一个指向一个有8个元素数组的指针,该数组是匿名数组,p是一个指针。
发表于 2016-09-13 20:12:46 回复(0)
(*p)[4]是一个数组指针,p是指向一个包含四个整数的数组的指针。所以  p=x后,*p指向x的第一行首地址,*(p+2)则指向了第三行的首地址。
发表于 2016-08-15 18:08:26 回复(0)
行指针
发表于 2015-10-17 15:15:18 回复(0)
p是一个数组指针,p的步长是数组长度*数组元素大小,即4*4 = 16个字节。
发表于 2015-09-23 16:22:47 回复(0)
*(p+2) = (*(p+2) + 0)
发表于 2015-09-23 11:47:45 回复(0)