1:引用传递参数与指针传递参数能达到同样的目的。指针传递参数也属于一种值传递,其传递的是指针变量的副本。如果使用指针的引用,就可以达到在函数体内改变指针地址的目的。运行代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
// 5.19.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using std::cout; using std::endl; static int global=16;//静态全局变量 void getMax(int* &p)//指针的引用 { if(*p<global) { delete p;//释放内存。 p = &global;//相当于pI1的引用改变了 } } void getMin(int *p) { if(*p>global) { delete p;//释放了pI2所指向的内存 p = &global;//副本值改变了,pI2无变化 } } int main() { int* pI1 = new int;//动态分配一个地址 int* pI2 = new int; cout<<"pI1指向的地址:"<<pI1<<endl; cout<<"pI2指向的地址:"<<pI2<<endl; *pI1 = 15;//global较大 *pI2 = 18; //global较小 cout<<"全局变量global的地址:"<<&global<<endl; cout<<"将pI1与pI2分别带入getMax与getMin函数"<<endl; getMax(pI1); getMin(pI2); cout<<"pI1指向的地址:"<<pI1<<endl; cout<<"pI2指向的地址:"<<pI2<<endl; cout<<"*pI1的值:"<<*pI1<<endl; cout<<"*pI2的值:"<<*pI2<<endl; return 0; } /*getMax函数通过传递指针的引用改变了指针的地址,指针pI1的地址最终指向了全局变量。而通过按值传递指针的getMin函数, 只能改变内存的内容,对内存执行操作并不能改变指针所指向的地址。*/
运行结果: