菜鸟开始学习 发表于 2018-2-10 13:03:34

求助!

#include<stdio.h>
void swap(int *p,int *q)
{
        int *a;
        a=p;
        p=q;
        q=a;
}
void main()
{
        int b,c,d;
        int *n1,*n2,*n3;
        scanf("%d %d %d",&b,&c,&d);
        n1=&b;
        n2=&c;
        n3=&d;
        if(*n1<*n2)
                swap(n1,n2);
        if(*n1<*n3)
                swap(n1,n3);
        if(*n2<*n3)
                swap(n2,n3);
        printf("%d %d %d",*n1,*n2,*n3);
}

BngThea 发表于 2018-2-10 14:05:51

为什么要交换地址呢?交换值才科学吧

菜鸟开始学习 发表于 2018-2-10 14:10:27

BngThea 发表于 2018-2-10 14:05
为什么要交换地址呢?交换值才科学吧

为什么交换地址不行{:9_241:}

waitforlove 发表于 2018-2-10 18:16:13

变量加关键字volatile
查下这个关键字就知道了

LYHCYQ 发表于 2018-2-11 17:10:16

菜鸟开始学习 发表于 2018-2-10 14:10
为什么交换地址不行

当你定义一个变量的时候 系统会自动生成一个空间用来存放变量
好比如酒店里的房间号一样
就算你把号码改变了 但里面的人不会变
因此只能交换数值 而不可以交换地址

LYHCYQ 发表于 2018-2-11 17:15:09

int *a ;
a = p ;
这个是错误的 地址没有这样的表达式
可以
int a ;
a = *p ;
*p = *q;
*q = a ;

BngThea 发表于 2018-2-11 20:43:01

菜鸟开始学习 发表于 2018-2-10 14:10
为什么交换地址不行

地址修改总感觉十分危险

菜鸟开始学习 发表于 2018-2-12 16:14:03

LYHCYQ 发表于 2018-2-11 17:10
当你定义一个变量的时候 系统会自动生成一个空间用来存放变量
好比如酒店里的房间号一样
就算你把号码 ...

假设指针n1指向b=2,地址为1000,指针n2指向c=5,地址为1004,交换地址后n1指向c,地址为1004,n2指向b,地址为1000,然后由大到小输出*n1、*n2.{:7_122:}
页: [1]
查看完整版本: 求助!