C语言 main() {int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23},(*p)[4]=a,i,j,k=0;

2025-01-19 22:13:01
推荐回答(4个)
回答1:

先说说i,j的值
i=0.j=0
i=0,j=1
i=1,j=0
i=1,j=1

第一组:
k=k+*(*(p+i)+j)
第二组:
k=k+*(*(p+i)+j) 注意k的值已变化
第三组:
k=k+*(*(p+i)+j) 注意k的值已变化
第四组:
k=k+*(*(p+i)+j) 注意k的值已变化

一时忘记怎么算(*p)[4]=a,i,j,k=0; 这个了

套用一下就可以了

回答2:

定义的是一个二维数组,(*p)[4]=a表示将这个二维数组的首地址即&a[0][0]赋给(*p)[4],初始化时这里(*p)其实相当于&a[0],若*(p+i)则相当于a[i]
*(*(p+i)+ j)就相当于a[i][j],两个for循环就是执行1+3+9+11+17+19=60

回答3:

结果:60
p是一个指向一维数组的指针,循环的作用是将二维数组
1 3 5 7
9 11 13 15
17 19 21 23
的前两列累加

p+i是对行进行移动,每次移动4个int的存储空间
*(p+i)+j是对列进行移动,每次移动1个int的存储空间

*(*(p+i)+j)就相当于a[i][j]

回答4:

i