c语言指针数组

voidmain(){inta[][3]={{1,2,3},{4,5},{7}};int*pa[3]={a[0],a[1],a[2]};int*p=a[0];int**p... 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不是地址吗,不加* 吗?//
展开
 我来答
千锋教育
2015-11-28 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
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
mafangsan
2015-11-28 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2598万
展开全部
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不是地址吗,不加* 吗?//指针指向数组的首地址之后是可以当数组名用的。
更多追问追答
追问
**pp=pa应该怎么看呢    pa指的是什么?**pp中的pp又指的是什么?
追答
**pp=pa 是让指向指针的指针指向指针数组

pa是指针数组的首地址

pp是指向指针的指针变量

你找本书好好看一下概念,这里并不复杂
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式