两者异曲同工。引用(前者)是C++特有的,C语言只能用指针。而C++又为了兼容C,保留了后者
回答:
C++中的形参为指针和引用都可以在函数内部修改实参的值,但它们在语法上是有所不同的。
指针是一个变量,存储了一个内存地址,可以通过这个内存地址访问实参所在的内存空间,使用指针作为形参时,需要在函数内部通过解引用操作来访问实参的值。可以通过指针修改实参的值,也可以将实参的值拷贝到另一个变量中进行修改,但需要注意指针为空指针的情况。
引用是实参的别名,可以直接访问实参的值,使用引用作为形参时,不需要进行解引用操作,可以直接修改实参的值,修改后的值会直接反映到实参中。引用不能引用空值。
为了展示两种方法的区别,我编写了下面的代码:
#include <iostream>
using namespace std;
void pointerFunc(int* p){
(*p)++;
}
void referenceFunc(int& r){
r++;
}
int main(){
int num = 10;
int* ptr = #
int& ref = num;
pointerFunc(ptr);
referenceFunc(ref);
cout << num << endl; //输出11,两种方法都可以修改实参的值
pointerFunc(NULL); //指针为空指针,会导致异常
//referenceFunc(NULL); //引用不能引用空值,会无法编译通过
return 0;
}
总结一下,使用指针作为形参需要进行解引用操作,可以引用空值,使用引用作为形参不需要进行解引用操作,不能引用空值。两种方法都可以在函数内部修改实参的值。