一个关于c语言的小问题求助
#include<stdio.h>void main()
{
int *p,i,a;
p=a;
for(i=0;i<10;i++)
{
scanf("%d",p++);
}
printf("\n");
for(i=0;i<10;i++,p++)
{
printf("%d\t",*p);
}
return 0;
}
这个为什么不能正常运行,需要怎么修改 有return的话应该把第二行的void改成int或者其他数据类型吧,void是返回值为空的情况,java来的,若解读的不对勿喷,谢谢 文艺的技术宅 发表于 2020-7-17 10:20
有return的话应该把第二行的void改成int或者其他数据类型吧,void是返回值为空的情况,java来的,若解读的 ...
这个改了也没办法正确运行 应该不是主要错误 #include<stdio.h>
int main()
{
int *p,i,a;
p=&a;
for(i=0;i<10;i++)
{
scanf("%d",&a);
}
printf("\n");
for(i=0;i<10;i++)
{
printf("%d\t",p);
}
return 0;
}
qiuyouzhi 发表于 2020-7-17 10:28
可以请教一下为什么吗
指针都指飞了;
for(i=0;i<10;i++)
{
scanf("%d",p++);//运行完这个循环之后,p指向的是a下一个单元(越界数组单元a)
}
printf("\n");//建议加一句p = a;或者直接遍历数组a
for(i=0;i<10;i++,p++)
{
printf("%d\t",*p);//从未知的内存单元开始读取,结果肯定是错误的
} 好的,谢谢
页:
[1]