张三ccccccc 发表于 2021-8-7 12:07:10

c语言函数实参和形参

/****题目:输入a,b,c 三个数按从小到大的顺序输出*****/
#include "stdio.h"
int exchange(int x,int y,int z);
void swap(int x ,int y);
int main()
{
        int a,b,c;
        printf("please input three numbers a,b,c:\n");
        scanf("%d%d%d",&a,&b,&c);
        exchange (a,b,c);
        printf("%d%d%d",a,b,c);
        return 0;
}
        int exchange(int x,int y,int z)
        {
         if(x>y) swap(x,y);
               if(x>z) swap(x,z);
               if(y>z) swap(y,z);
               return x,y,z;
        }
void swap(int x,int y)
{
        int temp;
                temp=x;
                x=y;
                y=temp;       
}
/****我这样写的话,结果a,b,c的值为啥没有交换,是因为实参和形参是单向值传递的原因吗,求大佬解答,跪跪。。。****/

万千只cnm 发表于 2021-8-7 12:08:55

对啊
你传的相当于是副本
副本改变了实参并不会改变
----------
可以用指针来间接改变

张三ccccccc 发表于 2021-8-7 12:10:12

万千只cnm 发表于 2021-8-7 12:08
对啊
你传的相当于是副本
副本改变了实参并不会改变


明白了明白了
页: [1]
查看完整版本: c语言函数实参和形参