int a[5][5]={0}; int *p[5]; 为什么不能p=a呢

 我来答
2010huolong
2012-04-07 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:102
采纳率:0%
帮助的人:70.2万
展开全部
①你定义的是数组列指针,其实你可以这样想p[5]代表5个指针p[0],p[1]~p[4],
②我也看了你的追问p确实是p[0]的地址,你让p[0]的地址等于a[0]的地址,这就意味着 指针和数组同享一个地址,因此a[0]的地址也是p[0]的地址,但是不意味着p[0]就是a[0]了,试想在同一个座位上做两个不同的人,他们自然不会舒服的,因此造成形参不一,发生冲突
③回到①,因为p[i]为列指针,因此赋值时 同一般的列指针相同,如int *fp;访问a[5][5]时,必须给fp赋值成fp=a[0],这样fp=&a[0][0],同理p[0]=a[0],这样p[0]=&a[0][0]
访问数组时直接可以是 *(p[i]+j)或*p[i][j]
风若远去何人留
推荐于2017-12-18 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20403 获赞数:450164
专业C/C++软件开发

向TA提问 私信TA
展开全部
当定义int *p[5]时, p是一个数组, 含有5个int *的元素.
所以赋值只能是赋值p[0]到p[4], 而不能改变p本身的值(数组名不能赋值.)
如果要p=a这样赋值,需要定义数组指针

int (*p)[5];
p=a;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王7792935
2012-04-07 · 超过27用户采纳过TA的回答
知道答主
回答量:122
采纳率:80%
帮助的人:46.3万
展开全部
p=*a这样才行。P指针是指向地址的 a是二维数组是不可以直接付给p的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chensitian
2012-04-07 · 超过23用户采纳过TA的回答
知道答主
回答量:143
采纳率:0%
帮助的人:80.3万
展开全部
拜托。p是指针,而且a还是二维数组怎么能相等
追问
p代表的是&p[0]对吧,a代表&a[0],为什么p[0]=a[0]没问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式