CC++中指针的引用小结

xiaoxiao2021-02-28  14

我们知道C语言中,对于函数参数的传指针操作本质上仍然是一个传值过程,只是将实参指针的值传递给了函数中的一个临时变量,实质上我们传入函数的只是一块内存的地址,而非指针本身。所以如果在函数中改变形参指针所指向的地址,实参指针的指向是不会被改变的。 如下图代码所示

void func(int *p) { int *n = new int; *n = 3; p = n; } int main() { int n = 1; int *p = &n; cout<<*p<<endl; func(p); cout<<*p<<endl; return 0; }

运行结果

1 1

可见实参指针并没有被改变。

如果我们希望在函输中能够改变指针的指向,该怎么办呢?答案是使用指针的引用作为参数来传递。

void func(int *&p) //此处使用指针的引用 { int *n = new int; *n = 3; p = n; } int main() { int n = 1; int *p = &n; cout<<*p<<endl; func(p); cout<<*p<<endl; return 0; }

运行结果

1 3

可见实参的指向被改变了。

转载请注明原文地址: https://www.6miu.com/read-1749994.html

最新回复(0)