C语言,指向一维数组元素的指针变量,int i,a[10],*p; p=a;二维数组int x

C语言,指向一维数组元素的指针变量,inti,a[10],*p;p=a;二维数组intx[3][4],*p;p=*x为什么在二维数组定义的时候可以写成p=x[0]却不能写... C语言,指向一维数组元素的指针变量,int i,a[10],*p; p=a;二维数组int x[3][4],*p; p=*x
为什么在二维数组定义的时候可以写成p=x[0]却不能写成p=x而是在前面多一个*号!为什么!我一直搞不清楚!
展开
 我来答
百度网友9d597a4
2012-03-04 · 超过24用户采纳过TA的回答
知道答主
回答量:116
采纳率:71%
帮助的人:34.1万
展开全部
a中存放的是数组a[10]中元素的地址,而对于二维数组int x[3][4],*p; p=*x, x[0], x[1], x[2]存放的是数组x[3][4]种元素的地址,x存放的的是x[0]的地址,也就是地址的地址。所以在二维数组定义的时候可以写成p=x[0]却不能写成p=x而是在前面多一个*号,*x为元素地址,而x位地址的地址
zzu_liuwei
2012-03-04 · TA获得超过372个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:226万
展开全部
因为p定义为int *p,而x是二维数组名,相当于一个二级指针,而x[0](或x[1],x[2])相当于一维数组名,与p类型匹配,可以赋给p,如果定义为int **p,就可以p = x 了
追问
二维数组名和以为数组名类型不一致的嘛   二维数组名不是代表一个地址吗
追答
一维数组名代表的是一个指针,这个指针指向的内容是数值,而二维数组名代表的也是一个指针,且这个指针指向的内容还是一个指针,最后这个指针指向的内容才是数值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
湮灭熵反
2012-03-04 · TA获得超过145个赞
知道答主
回答量:78
采纳率:0%
帮助的人:20.9万
展开全部
p是一级指针变量,在内存中赋予地址,p=x[0]表示在指针p的地址里保存x[0]是合法的,x就表示一个一维数组,不能把一个一维数组赋给一个一级指针变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
信步你冷果1v
2012-03-04
知道答主
回答量:6
采纳率:0%
帮助的人:9763
展开全部
因为*P是指针变量,指向地址,而数组X也是指向地址的变量所以可以直接赋值,即可以写成*P=X。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
易成8686
2012-03-04
知道答主
回答量:8
采纳率:0%
帮助的人:9890
展开全部
x[0]与x一个是行指针,一个是列指针,数值虽一样,但指的内容不一样!!!
加*可行列指针转换!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式