c++按值传递实例讲解

c++按值传递实例讲解,如果说c++中的swap函数没有交换主函数中的a和b,那么它交换的到底是谁的值呢?这个问题看来复杂,其实很简单。swap函数交换的是main函数中的a和b的副本的值。换句话说就是在main函数中定义的a和b的备份值。swap函数交换的是main函数中的a和b的副本,而并非a和b的本身。但是为什么swap函数不直接交换a和b的本身呢,却去交换他们的副本的值?这是因为当我们直接将a和b传递给swap函数时,这样传递方式是按值传递。

假如将a和b按值传递给swap函数,那么编译器就会自动在栈中创建a和b的拷贝,然后将a和b的拷贝传递给swap函数。在swap函数中对a和b的拷贝进行交换。因此我们看到的输出语句,a和b确实进行了交换,只不过交换的是a和b的副本而已。

#include <iostream>

using namespace std;

void swap(int a,int b)
{
int c;
cout<<”swap函数中,交换前,a:”<<a<<”\t”<<”b:”<<b<<endl;
c=a;
a=b;
b=c;
cout<<”swap函数中,交换后,a:”<<a<<”\t”<<”b:”<<b<<endl;//在swap函数中a与b的值交换了
}
int main()
{
int a=8,b=9;
cout<<”主程序中,交换前,a:”<<a<<”\t”<<”b:”<<b<<endl;
swap(a,b);
cout<<”主程序中,交换后,a:”<<a<<”\t”<<”b:”<<b<<endl;//在主函数中a与b的值并没有交换成功!
return 0; 本文链接地址: c++按值传递实例讲解