15178234933 发表于 2019-7-25 11:00:56

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",*p);
    }
   
   
}

mqcake 发表于 2019-7-25 11:11:10

你只需要在第二个for前面把p指向a即可,p=a;

黑白客 发表于 2020-10-13 23:55:01

第一个循环结束后p指向了最后一个元素的地址,只要这时候再p=a重新赋值就行了

风过无痕1989 发表于 2020-10-14 00:20:31


#include<stdio.h>

void main()

{

    int *p,i,a;
    p=a;
    for(i=0;i<10;i++)
    {
      scanf("%d",p + i);
    }
    printf("\n");
    for(i=0;i<10;i++)
    {
      printf("%d ",*p + i);
    }
      
}

乐乐学编程 发表于 2020-10-14 21:57:38

还没弄明白?

风过无痕1989 发表于 2020-10-21 14:21:18

弄明白了,就给个最佳答案,没弄明白,请继续提出问题

franklin-van 发表于 2020-11-2 12:47:55


#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++)
      {
            printf("%3d",*p);
      }
      printf("\n");
}

为什么这个程序运行之后的结果也能达到预期啊,第二个for里面是怎么输出数组的值的啊
页: [1]
查看完整版本: C语言指针一个不容易发现的错误,上次看视频,没找到这个,求大佬解答啊