作业帮 > 综合 > 作业

大哥为什么我这个程序的结果没有把a,b值互换

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/05/05 19:43:57
大哥为什么我这个程序的结果没有把a,b值互换
# include
void huhuan(int a,int b)
{
int t;
t = a;
a = b;
b = t;
return;
}
int main(void)
{
int i = 4;
int j = 6;
huhuan(i,j);
printf("i = %d,j = %d\n",i,j);
return 0;
}
大哥为什么我这个程序的结果没有把a,b值互换
# include <stdio.h>
void huhuan(int *a, int *b)//
{
    int t;
    t = *a;//  
    *a = *b;//
    *b = t;//
    //return;
}
int main(void)
{
    int i = 4;
    int j = 6;
    huhuan(&i, &j);// 
    printf("i = %d, j = %d\n", i, j);
    return 0;
}
再问: 这个我懂。只是我只想知道我的那个程序为什么没把i, j的值互换.明明函数里互换了,当被调函数终止时形参的值不是会返回给实参吗?
再答: 第一,哪里有返回,你的函数类型明明是void 第二,就算有返回值,那调用方都没有变量来接收返回值 第三,就算调用函数有了接收的变量,函数也无法同时返回两个返回值
再问: 嗯!大哥我还想问下这个流程:当执行完这被调函数时,程序是不是回到了主调语句,而此时的主调语句里的i, j 地址空间里的值已经互换了,所以printf输出时i和j的值就换过来了?
再答: 你根本没有理解函数,指针的实质,好好看书