案例
#include <iostream>
void swapr(int & a, int & b); // a,b are aliases for ints
void swapp(int * p, int * q); // p,q
void swapv(int a, int b); // a,b are new variables
int main()
{
using namespace std;
int wallet1 = 300;
int wallet2 = 350;
cout << "wallet1 = $ " << wallet1;
cout << " wallet2 = $ " << wallet2 << endl;
cout << "Using references to swap contents:\n";
swapr(wallet1, wallet2); // pass vvariables
cout << "wallet1 = $" << wallet1;
cout << " wallet2 = $" << wallet2 << endl;
cout << "Using pointers to swap contents again:\n";
swapp(&wallet1, &wallet2); //pass address of variables
cout << "wallet1 = $" << wallet1;
cout << " wallet2 = $" << wallet2 << endl;
cout << "Trying to use passing by value:\n";
swapv(wallet1, wallet2); // pass values of variables
cout << "wallet1 = $" << wallet1;
cout << " wallet2 = $" << wallet2 << endl;
return 0;
}
void swapr(int &a, int &b) // use references
{
int temp;
temp = a;
a = b;
b = temp;
}
void swapp(int *p, int *q) // use pointers
{
int temp;
temp = *p;
*p = * q;
*q = temp;
}
void swapv(int a, int b) // try using values
{
int temp;
temp = a;
a = b;
b = temp;
}
这段代码演示了通过引用、指针和传值三种方式来交换两个变量的值。
首先,在代码中定义了三个函数:swapr、swapp和swapv,它们分别用于通过引用、指针和传值来交换变量的值。
在主函数中,创建了两个整型变量wallet1和wallet2,并分别赋值为300和350。
接下来,通过cout语句输出wallet1和wallet2的值。
然后,使用swapr函数通过引用来交换wallet1和wallet2的值,并使用cout语句输出交换后的值。
接着,使用swapp函数通过指针来交换wallet1和wallet2的值,并再次使用cout语句输出交换后的值。
最后,使用swapv函数通过传值来交换wallet1和wallet2的值,并再次使用cout语句输出交换后的值。
通过运行这段代码,你会看到通过引用和指针交换的结果是正确的,而通过传值交换的结果并不会影响原始的变量值。这段代码演示了通过引用、指针和传值三种方式来交换两个变量的值。
首先,在代码中定义了三个函数:swapr、swapp和swapv,它们分别用于通过引用、指针和传值来交换变量的值。
在主函数中,创建了两个整型变量wallet1和wallet2,并分别赋值为300和350。
接下来,通过cout语句输出wallet1和wallet2的值。
然后,使用swapr函数通过引用来交换wallet1和wallet2的值,并使用cout语句输出交换后的值。
接着,使用swapp函数通过指针来交换wallet1和wallet2的值,并再次使用cout语句输出交换后的值。
最后,使用swapv函数通过传值来交换wallet1和wallet2的值,并再次使用cout语句输出交换后的值。
通过运行这段代码,你会看到通过引用和指针交换的结果是正确的,而通过传值交换的结果并不会影响原始的变量值。
引用和指针是C++中两种不同的机制,用于处理变量的别名和内存地址。
总结: