Juniorboy 发表于 2020-4-29 17:36:02

指针,课后作业21

#include <stdio.h>

int main(void)
{
      int a, b, c, t;
      int *pa, *pb, *pc;
      
      printf("请输入三个数:");
      scanf("%d%d%d", &a, &b, &c);
      
      pa = &a;
      pb = &b;
      pc = &c;
      
      if (a > b)
      {
                t = *pa;
                *pa = *pb;
                *pb = t;
      }
      
      if (a > c)
      {
                t = *pa;
                *pa = *pc;
                *pc = t;
      }
      
      if (b > c)
      {
                t = *pb;
                *pb = *pc;
                *pc = t;
      }
      
      printf("%d <= %d <= %d\n", *pa, *pb, *pc);
      printf("%d <= %d <= %d\n", a, b, c);
      
      return 0;
}

这里的11~13的格式不是应该写成这样吗:
int *pa = &a;
int *pb = &b;
int *pc = &c;

zltzlt 发表于 2020-4-29 17:37:22

本帖最后由 zltzlt 于 2020-4-29 17:42 编辑

前面已经声明了指针变量,这里是给指针的地址赋值,不是给指针指向的变量赋值(而且这时指针的地址未赋初始值,是一个野指针),所以不用加星号。

qiuyouzhi 发表于 2020-4-29 17:38:01

并不是。
最开始定义指针要加*,是因为那是指针的标准。
这个要加*,是代表这个是取值运算符,也就是给pa的值赋值。

liuzhengyuan 发表于 2020-4-29 17:38:31

前面没有
int
所以不加 '*'

Juniorboy 发表于 2020-4-29 17:51:26

zltzlt 发表于 2020-4-29 17:37
前面已经声明了指针变量,这里是给指针的地址赋值,不是给指针指向的变量赋值(而且这时指针的地址未赋初始 ...

明白了,谢谢。

Juniorboy 发表于 2020-4-29 17:54:03

zltzlt 发表于 2020-4-29 17:37
前面已经声明了指针变量,这里是给指针的地址赋值,不是给指针指向的变量赋值(而且这时指针的地址未赋初始 ...

很清楚,您不提醒野指针我都没想到,但是这个最佳在上一个问题的时候说好了给3楼了。希望在下一个问题里还能见到您的身影,哈哈哈
页: [1]
查看完整版本: 指针,课后作业21