黑马程序员技术交流社区

标题: 请问为什么我的代码不能成功的交换两个变量的值? [打印本页]

作者: 小腼腆不是错    时间: 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