6.4.1 把地址传递给函数(2)
2.定义该函数的原型。
- void swap (int *first, int *second);
这个函数的名字是swap,它有两个输入参数,它们都是指向整数的指针。
3.开始定义main()函数并创建两个整数。
- int main() {
- int myNum1 = 23900;
- int myNum2 = -149;
4.输出那两个整数的初始值。
- std::cout << "At first, myNum1 is "
- << myNum1 << " and myNum2 is "
- << myNum2 << "\n\n";
5.调用swap()函数。
- swap (&myNum1, &myNum2);
这个函数以两个指针作为其输入参数,这意味着必须把两个地址值传递给它。这很简单,在两个变量名的前面加上"取地址"操作符就行了。
6.再次输出那两个变量的值。
- std::cout << "After calling the function, myNum1 is "
- << myNum1 << " and myNum2 is "
- << myNum2 << "\n\n";
正如你将在运行这个程序时看到的那样,在调用swap()函数之后,两个变量的值将交换过来。
7.完成main()函数。
- std::cout << "Press Enter or Return to continue.\n";
- std::cin.get();
- return 0;
8.开始定义swap()函数。
- void swap (int *first, int *sencond) {
函数定义的开头与它的原型完全一样。如果你有什么疑问,请复习第5章中的有关内容。
9.创建一个临时整数。
- int temp;
这个临时变量是交换两个变量的值所必需的。它是一个整数,不是一个指针,将保存一个值而不是保存一个地址。
10.交换两个变量的值。
- temp = *first;
- *first = *second;
- *second = temp;
交换两个变量的值需要3个步骤。第1步:把一个值保存到temp变量里,注意,引用first指针所指向的值需要使用*first对它进行解引用;第2步:把second的值赋给first,这一步需要对两个指针进行解引用;第3步,把first的原始值(已在第1步临时存入temp变量)赋值给second。
11.完成swap()函数。
- }
12.把这个文件保存为swap1.cpp,然后编译并运行这个程序(如图6-23所示)。
|
图6-23 swap()函数利用指针和地址 对两个变量的值进行了交换 |
"提示
第5章还介绍了重载函数的概念:多个函数有同样的名字,但有着不同类型或个数的输入参数。如果想让swap()函数还能对其他类型的变量的值进行交换,可能需要用到这个概念。
有时候,向函数传递地址是让函数接收一个复杂数据类型的唯一办法。
【责任编辑:
云霞 TEL:(010)68476606】