你这个swap函数是值传递,所以不会交换main函数中的a b
形参用指针或者引用可以解决
形参和实参:
定义函数里的参数叫做形参(形式参数)调用函数里的参数叫做实参(实际参数)。
分析:
函数的形参是实参的一份拷贝,上面的代码中,只是交换定义函数里的参数,只对形参进行交换当然不会实现对实参(我们实际要交换的变量)的交换。
简单来说:如果按照题主代码所写,我们只是交换了swap中a和b的值,并没有对main函数中a和b的值进行交换。
这个时候就要通过使用传指针的方法来修改函数外部的变量。
写了一下,可供题主参考:
#include<stdio.h>
void swap(int* b,int* a){
int t = *a;
*a = *b;
*b = t;
}
int main()
{
int a = 5;
int b = 6;
swap(&a,&b);
printf("%d-%d\n",a,b);
return 0;
}
运行结果如图:
鉴于你这个是C不是C++,C中没有引用这个说法,所以你的函数改成以下即可
#include<stdio.h>
void swap(int *a, int *b);
int main(){
int a = 5;
int b = 6;
swap(&a, &b);
printf("%d-%d\n", a, b);
return 0;
}
void swap(int *a, int *b){
int t = *a;
*a = *b;
*b = t;
}