swap交换函数使用失败怎么回事

img

img

img


int argc,char*argv[]这是什么意思?以及为什么我交换函数出来的值有问题?a=5,b=10?不变?

因为你交换的是形参,不是实参
想交换实参,你的swap应该这样定义
void swap(int &a,int &b)

头文件改成这样

void swap(int *a,int *b);

主函数里面的改成这样


swap(&a,&b);

C语言函数参数仅传值

int argc,char*argv[]是传给main函数的参数,main函数由系统调用。argc 是命令行总的 参数 个数 argv []是 argc 个 参数 ,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数
至于你写的swap。你这样交换变量值是毫无意义的。首先这个swap函数调用时实参和形参是发生值传递(相当于值拷贝)swap函数会给传入的数据分配新的地址,也就是传给swap的只是5和10(并不是主函数中的a,b变量),他们在swap函数中交换后随着swap函数调用结束,swap中的形参a,b就被释放了。所以你在主函数中的a,b并没有发生变化,你看可以尝试传递主函数中a,b的地址,通过交换地址中元素的值来达到交换。

int argc,char星 argv[]这是什么意思?
这个程序的命令行参数,第一个是命令行参数的个数;第二个是命令行参数的数组,数组为char星 类型。

以及为什么我交换函数出来的值有问题?a=5,b=10?不变?
方法的参数是传入的是值,在函数体里交换后,返回主方法,对实参不影响。可以考虑引用传递。
形如:void swap(int &a,int &b);