C语言的问题,这道题怎么做?

9.14

数组为
1,2,3
4,5,6
7,8,9
10,11,12
定义a[4][3],那么能使用的上限为a[3][2],因为c语言下标从0开始。
p[0][0]指向第0行,第0列,也就是1

prt[2][2]指向第2行,第2列,也就是9

p指向a的第一个元素地址,(*(p+1))[1]就指向第1行,第1列,也就是5追问

b选项也可以把p0,换成a0往里面代吧?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-03
答案A是错误的。
a数组的最后一个元素是a[3][2]-------(下标从0开始)追问

d选项怎么看?

追答

(*(p+1))就是a[1],
(*(p+1))[1]就是a[1][1]

追问

我知道p0、p1、p2、p3都是个指针,可是p又是个什么东西?

p[0]、p[1]、p[2]、p[3]都是个指针,那请问光一个p,那又是什么东西?

追答

1、int(*p)[4];------ptr为指向含4个元素的一维整形数组的指针变量(是指针)
2、int *p[4];-------定义指针数组p,它由4个指向整型数据的指针元素组成(是数组)
3、int(*)[4];--------实际上可以看作是一种数据类型。也就是第一个(int(*p)[4];)中定义的p的数据类型
其实你要看这种到底是什么,就是要看他最先和谁结合。 比如1中p先与*结合,那就说明p本质是一个指针;而2中p先与后面的[4]结合,说明他本质是一个数组。
好了,int *p[4]; p是一个指针数组名,也就是p是一个二级指针,指向p[0]的地址。

追问

明白了

相似回答