苹果妹妹爱学习 发表于 2020-7-17 10:06:11

一个关于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;
}

苹果妹妹爱学习 发表于 2020-7-17 10:07:19

这个为什么不能正常运行,需要怎么修改

文艺的技术宅 发表于 2020-7-17 10:20:24

有return的话应该把第二行的void改成int或者其他数据类型吧,void是返回值为空的情况,java来的,若解读的不对勿喷,谢谢

苹果妹妹爱学习 发表于 2020-7-17 10:22:27

文艺的技术宅 发表于 2020-7-17 10:20
有return的话应该把第二行的void改成int或者其他数据类型吧,void是返回值为空的情况,java来的,若解读的 ...

这个改了也没办法正确运行 应该不是主要错误

qiuyouzhi 发表于 2020-7-17 10:28:47

#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;
}

苹果妹妹爱学习 发表于 2020-7-17 10:32:21

qiuyouzhi 发表于 2020-7-17 10:28


可以请教一下为什么吗

CodingCat_k 发表于 2020-7-17 10:35:58

指针都指飞了;
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);//从未知的内存单元开始读取,结果肯定是错误的
      }

苹果妹妹爱学习 发表于 2020-7-17 10:37:08

好的,谢谢
页: [1]
查看完整版本: 一个关于c语言的小问题求助