c语言指针和二级指针问题 如果 int a[][3]={{1,2,3},{4,9},{7}}; int *p[3]={a[0],a[1],a[2]};

如果
int a[][3]={{1,2,3},{4,9},{7}};
int *p[3]={a[0],a[1],a[2]};
那么
*(*(p+i)+i)=*(*p+i)+3
**p
两条语句指向那个数组元素

语句不全,i没有指明,把全程程序提供一下吧追问

忘了写了 i=1

追答

a[1][1]=a[0][1]+3
a[0][0]

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-11

    从a的声明得知a是a[3][3]的二维数组。

    p是指针数组,包含三个整形指针,分别质量二维数组的三行

    **p相当于a[0][0]

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

    *(*p+i)+3 相当于a[i][3]但由于数组第二维的上限是3,所以其实是a[i+1][0]


p是二级指针,p+1移动的是一行,(*p)是一级指针,(*p)+1移动的是一个整形。**p是具体的元素了,不是指针了。

本回答被提问者采纳
相似回答