c语言指针数组

2025-03-04 12:30:44
推荐回答(2个)
回答1:

p是int类型指针,指向数组a的第1个元素即一个一维的数组{1,2,3}首地址所以p[1]相当于a[0][1]所以printf("%d\n",p[1]);
输出2 。 int **pp =pa 是声明了一个指向pa的指针,而pa又是指向a首地址的int类型指针。pa指向的是a的第一维,pa[0] = a[0] ,pp[2][1]相当于a[2][1]而a数组的[2]中只初始化了[2][0]位置的7,那[2][1]位置就是默认的值0,所以printf("%d\n",pp[2][1]);
输出0

回答2:

void main()
{
int a[][3]={{1,2,3},{4,5},{7}};
int *pa[3]={a[0],a[1],a[2]};

int *p=a[0];
int **pp=pa; //这句什么意思??//定义了指向指针的指针变量
printf("%d\n",*a[1]);
printf("%d\n",*(*(a+1)+1));
printf("%d\n",*pa[1]);
printf("%d\n",p[1]); //为什么输出为2 ???//这里应该是输出了一个地址
printf("%d\n",pp[2][1]);} // pp不是地址吗,不加* 吗?//指针指向数组的首地址之后是可以当数组名用的。