机智如我么么哒 发表于 2019-9-22 11:08:35

怎么和我预想的不一样

#include<stdio.h>
int main()
{
        int str,i,j;
        int *p;
        for(i=1;i<=9;i++)
        {
                str=getchar();
        }
        str=0;
        p=&str;
        for(i=1;i<=9;i++)
        {
                printf("%d ",*(p+i));
                if(i%3==0)printf("\n");
        }
        return 0;
}
这是我的代码,我想将9个数按3*3的形式输出,但是输出的是一堆乱码,我觉得我的程序逻辑没有问题呀,str【0】=0,将p指向str的地址,打印*(p+i)的值,意思不就是打印p从1开始指向的值吗?但是结果是一堆乱七八糟的数字,有大佬求解吗?

jackz007 发表于 2019-9-22 11:22:52

本帖最后由 jackz007 于 2019-9-22 11:38 编辑

      p=&str;

    指针指向 str 的尾巴是什么意思?必须得指向开头啊!

       str=0;

    数组 str 第一个元素强行置 0 不知道几个意思,是不想要第一个键盘的输入?

#include<stdio.h>
int main(void)
{
      int str , * p , i                              ;
      for(i = 0 ; i < 9 ; i ++) str = getchar() - '0' ;
      p = str                                          ;
      for(i = 0 ; i < 9 ; i ++) {
                if(! (i % 3)) {
                        if(i) printf("\n")               ;
                        printf("\t\t")                     ;
                } else {
                        printf(" ")                        ;
                }
                printf("%d" , * (p + i))                   ;
      }
}

C:\Bin>x
123456789
                1 2 3
                4 5 6
                7 8 9
C:\Bin>
页: [1]
查看完整版本: 怎么和我预想的不一样