黑马程序员技术交流社区
标题:
请问为什么我的代码不能成功的交换两个变量的值?
[打印本页]
作者:
小腼腆不是错
时间:
2015-7-16 18:29
标题:
请问为什么我的代码不能成功的交换两个变量的值?
#include<stdio.h>
int main(int argc, const char * argv[]) {
int a = 4,b = 5;
printf("交换前:a = %d,b = %d\n",a,b);
swap(a,b);
printf("交换后:a = %d,b = %d\n",a,b);
return 0;
}
void swap(int a,int b){
int temp;
temp = a;
a = b;
b = temp;
}
作者:
丁丙乙甲
时间:
2015-7-16 19:22
因为形参与实参之间只是值传递,不能改变主调函数变量的值;当调用被调函数时,内存临时划分一个内存空间给形参,并且把实参的值传递给形参,当被调函数执行完毕后,临时划分的内存空间释放掉。所以不能改变主调函数的变量。你这里可以利用指针来完成交换!
作者:
你说呢
时间:
2015-7-16 19:31
调用函数时传递数据,你上面传递的指而不是地址,调用函数接受数据,进行交换,只是调用函数内部进行的,执行完后就撤消数据,也没返回值,所以主函数中的变量的值并没改变.....
作者:
OUT___Man
时间:
2015-7-16 21:01
想要将功能封装到函数中,那个函数的形参需要指针才行。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2