利用指针实现函数的地址传递
之前在函数部分中,如果使用简单的值传递(如程序cpp1),就会发生虽然函数内部的形参值发生改变,但是显示出来的实参值并没有发生变化。因此,需要使用指针进行地址传递,就可以实现实参的交换(如程序cpp2)
//cpp1
#include<iostream>
using namespace std;
void swap(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
//cpp2
#include<iostream>
using namespace std;
void swap1(int *p1, int *p2)
{
int temp = *p1;
*p1 = *p2;
*p2 = temp
}
int main()
{
int a = 1, b = 2;
swap(&a, &b);
实际上,并没有哪一种传递更好的说法。当想修改实参的值时,就使用地址传递,当不想修改实参的值时,就使用值传递。