问一道C语言的题

2024-12-31 16:14:20
推荐回答(6个)
回答1:

int a[3][2]为一个三行两列的元素
1 2
3 4
5 6
*p[3]为指针数组,数组中的每个元素都是整形的指针。
a[1]为指向二维数组第二行首地址的指针
p[0]=a[1],使p[0]也指向数组的第二行的首地址
p[0]+1,移动指针p[0]使之挪动一个单元即指向第二行第二个元素
*(p[0]+1)取出p[0]所指单元的内容即a[1][1]

回答2:

p[0]=a[1]这个是行坐标,如果只是*(p[0])即为a[1][0]。可是它+1,+1是找列坐标啊,就变成a[1][1]。

回答3:

在2维数组中a[1]的意思就是数组第二行的首地址,将它赋值给指针数组p[0],而p[0]指向行的指针数组,所以p[0]+1就是a[1][1]的地址,所以*(p[0]+1)就是a[1][1]了,还是不明白的话,看看C语言中将指针的那部分,、、、

回答4:

p[0]=a[1];说明p[0]是指向a[1]的,记录的是a[1]的地址从,那开始,所以是a[1][1])

回答5:

指针数组p的第一个地址指向数组a【1】 则*(p[0]+1)即表示a[1][1])啊 依此*(p[0]+2)表示a[1][2] 这是一种表示方法啊 记住就行了

回答6:

fun
函数中a是静态数据类型static,就是说它初始化后在内存中就有个固定的地址,函数返回后a仍然存在。
每次调用fun函数后a的值都会加2,所以最后的结果就是
246
printf("\n");
//
表示换行