C++中的指针问题(三)

指针的用途非常的广泛,除了可以间接用于修改变量地址等问题外,还可以用作函数中的传递,实现形参影响实参。具体情况通过一个例子来说明:
例:现要求设计一个程序,其功能是将两个数交换,要求交换要在子函数中实现。
解决方案:使用指针往子函数中传递地址。

#include <iostream>
using namespace std;
void swap(int* a, int* b){   //指针作形参,要求实参传递的内容为地址
    int flag;
    flag = *a;
    *a = *b;
    *b = flag;    //实现交换,同时不需要返回值
}
int main(){
    int a, b;
    cin >> a >> b; //输入两个数
    cout << "before the swap, the value of a and b is: ";
    cout << a << "   " << b << endl << endl;  //交换前
    swap(&a, &b); //向该函数中传递实参,实参为变量a和b的地址
    cout << "after the swap, the value of a and b is: ";
    cout << a << "   " << b;  //输出交换后
}

输出结果:

该程序中,子函数没有返回值,main函数中的两个变量a与b的值也发生了交换,这是因为main函数中向子函数swap中传递了这两个变量的地址,相当于房间A和房间B分别存有一数,子函数无权过问这两个房间的内容,但是运用指针作为参数后,相当于main函数把房间A和B的钥匙交给了子函数swap,就相当于给子函数授权了,子函数swap可以直接用钥匙打开房间A和B,再将数进行交换。

如有错误,欢迎大家批评与指正!

猜你喜欢

转载自blog.csdn.net/WJ_SHI/article/details/81569682