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

大哥为什么我这个程序的结果没有把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 = %dn",i,j);
return 0;
}
没铺的独行侠 1年前 已收到1个回答 举报

wyq6213 春芽

共回答了13个问题采纳率:92.3% 举报

# include void huhuan(int *a, int *b)//{int t;t = *a;// ...

1年前 追问

8

没铺的独行侠 举报

这个我懂。只是我只想知道我的那个程序为什么没把i, j的值互换.明明函数里互换了,当被调函数终止时形参的值不是会返回给实参吗?

举报 wyq6213

第一,哪里有返回,你的函数类型明明是void 第二,就算有返回值,那调用方都没有变量来接收返回值 第三,就算调用函数有了接收的变量,函数也无法同时返回两个返回值

没铺的独行侠 举报

嗯!大哥我还想问下这个流程:当执行完这被调函数时,程序是不是回到了主调语句,而此时的主调语句里的i, j 地址空间里的值已经互换了,所以printf输出时i和j的值就换过来了?

举报 wyq6213

你根本没有理解函数,指针的实质,好好看书
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.030 s. - webmaster@yulucn.com