A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#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;

}

3 个回复

倒序浏览
因为形参与实参之间只是值传递,不能改变主调函数变量的值;当调用被调函数时,内存临时划分一个内存空间给形参,并且把实参的值传递给形参,当被调函数执行完毕后,临时划分的内存空间释放掉。所以不能改变主调函数的变量。你这里可以利用指针来完成交换!
回复 使用道具 举报
调用函数时传递数据,你上面传递的指而不是地址,调用函数接受数据,进行交换,只是调用函数内部进行的,执行完后就撤消数据,也没返回值,所以主函数中的变量的值并没改变.....
回复 使用道具 举报
想要将功能封装到函数中,那个函数的形参需要指针才行。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马