学编程的盆子 发表于 2021-3-2 12:31:53

求助一个指针初始值的问题

#include<stdio.h>
int main()
{
    int a = {23,15,50,3,21,20,35},b,*p,*q;
    p = a;
    q = b;
    printf("Input 6 numbers:");
    for (int i = 0; i < 7; i++)
    {
      printf("%-2d ",p);
    }
    printf("\n");

    for (int i = 0; i < 7; i++)
    {
      *q = *p; q++; p++;
    }

   

    for (int i = 0; i < 7; i++)
    {
      printf("%d",q);
    }
   
    return 0;
   
}


第一个printf 输出23,15,50,3,21,20,35   这没问题

为什么第二个printf 输出是这样 0,23,15,50,3,21,20它前面这个0就很迷

jackz007 发表于 2021-3-2 14:53:01

本帖最后由 jackz007 于 2021-3-2 14:56 编辑

      指针 q 原本指向数组 b 的开头,但是,到了第 18 行的时候, q 已经指向了数组 b 的末尾,继续使用 q[ i ] 已经不能访问到数组 b 的元素了。
       所以,这一句
    printf("%d",q);
       得改成下面这样
    printf("%d",b);

rororoya 发表于 2021-3-2 20:48:45

蒙了,我复制你的代码运行出来没问题啊,没有0啊

Input 6 numbers:23 15 50 321 20 35
2315503212035
Process finished with exit code 0

rororoya 发表于 2021-3-2 20:53:17

rororoya 发表于 2021-3-2 20:48
蒙了,我复制你的代码运行出来没问题啊,没有0啊

Input 6 numbers:23 15 50 321 20 35


哦哦,楼上说的对,我这个是因为 q的末地址刚好是p的起始地址,所以一样了,尴尬
页: [1]
查看完整版本: 求助一个指针初始值的问题