关于c语言 把数组名赋予指针的问题。

关于c语言把数组名赋予指针的问题。inta[3][3]={0};int*p1=a,p2=a[0];a和a[0]的值都是a[0][0]的地址。但p1指向的是1维数组,p2指... 关于c语言
把数组名赋予指针的问题。int a[3][3]={0};
int* p1=a,p2=a[0];
a和a[0]的值都是a[0][0]的地址。
但p1指向的是1维数组,p2指向的是一个元素。
由于a指向一维数组,a[0]指向元素。
是否说明赋给指针p1,p2不只是地址值,还有它的指向。如果是这样,那么这个指向是怎么表示的或怎么实现的呢?
展开
 我来答
GTA小鸡
高粉答主

2017-05-16 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
你的理解从本质上就有问题
int *p1=a不能通过编译,因为a是二维数组指针,类型是int (*)[3],无法转换到int*型。必须用int (*p1)[3]=a或者int *p1=a[0]才可以。同理int p2=a[0]无法通过编译,因为a[0]是一个int指针而不是一个int元素,必须用int *p2=a[0]才可以。
a代表二维数组,它指向的是一维数组a[0]的地址,该地址恰好和a[0][0]的地址相等,但类型上有着本质区别,a是一个是int*数组的指针而a[0]是一个int*元素的指针。a[0]代表的是二维数组a的第一行,是一个一维数组,指针a[0]是int*型,它指向该一维数组的首元,即a[0][0]的地址。
追问
嗯嗯,谢谢
zhangsonglin_c
高粉答主

2017-05-16 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.7万
采纳率:83%
帮助的人:6997万
展开全部
就是指向一个地址。数组第一个元素的地址就是数组地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式