C语言指针数组赋值问题

#include<stdio.h>voidmain(){inta[2][2],*ptr;inti,j;ptr=a[0];for(i=0;i<2;i)for(j=0;j<2... #include <stdio.h>
void main()
{
int a[2][2],*ptr;
int i,j;
ptr=a[0];
for(i=0;i<2;i )
for(j=0;j<2;j )
scanf("%d",ptr );
//ptr=a[0];这里为啥还定义一次,之前不是定义过了么?
for(i=0;i<2;i )
{
for(j=0;j<2;j )
printf("M",*ptr );
printf("\n");
}
}
展开
 我来答
华梦瞬逝
2018-07-15 · TA获得超过612个赞
知道小有建树答主
回答量:184
采纳率:75%
帮助的人:99.7万
展开全部
这个程序是不是少了自增运算符
我猜测,ptr这个指针在读入这个循环中位置发生了改变
所以下面的ptr=a[0];是为了让ptr重新指向a[0][0]
追问
倒数第四行printf("M",*ptr++ );我知道少了,我想问的是,为啥输出数组元素的时候还得在//ptr=a[0];
不加这个语句输出的数值不是数组元素。
应该就像你说的那样,赋值的之后已经不是a[0]了。需要从新指向a.
谢谢了。😂
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式