sususususu 发表于 2022-11-25 21:28:54

指针和二维数组课后作业,萌新求教

#include <stdio.h>

int main()
{
      char matrix = {
                'I', 'l', 'o', 'v', 'e',
                'F', 'i', 's', 'h', 'C',
                '.', 'c', 'o', 'm', '!'
      };
      char *p;

      p = &matrix;

      printf("%c", *p);
      printf("%c", *p++);
      printf("%c", *++p);
      printf("\n");

      return 0;
}

为何打印结果是vvF,而不是vve

人造人 发表于 2022-11-25 21:32:24

再加上一行是不是就能理解了?

sh-5.1$ cat main.c
#include <stdio.h>

int main()
{
      char matrix = {
                'I', 'l', 'o', 'v', 'e',
                'F', 'i', 's', 'h', 'C',
                '.', 'c', 'o', 'm', '!'
      };
      char *p;

      p = &matrix;

      printf("%c", *p);
      printf("%c", *p++);
      printf("%c", *p);
      printf("%c", *++p);
      printf("\n");

      return 0;
}
sh-5.1$ ./main
vveF
sh-5.1$

jackz007 发表于 2022-11-25 21:35:34

本帖最后由 jackz007 于 2022-11-25 21:37 编辑

      printf("%c", *p)   ; p = & matrix 打印 'v'
      printf("%c", *p++) ; // 先取值,再增值指针   p = & matrix 打印 'v',完成取值后,p = & matrix
      printf("%c", *++p) ; // 先增值指针 ,再取值,p = & matrix,打印 'F'
页: [1]
查看完整版本: 指针和二维数组课后作业,萌新求教