标签:说明 pre 程序 value 获取 内存泄漏 use 很多 不可
? 作为一个C++的新手,一直不明白指针的意义。之前代码写的最多的是Python和Java。尤其是在写Python的时候,我很多时候想在函数中改变原变量的值是没有办法的。(当然Python分成了可变和不可变对象,那又是另一个话题了...)我在学习指针的时候就一直不明白,指针复杂难以追踪,很多时候还需要创建动态内存容易造成内存泄漏,为什么指针还需要存在?后来发现书上早已给我阐明,只是我看书过于囫囵吞枣,这里作为心得体会写下来。
? 简单来说,C++的函数有两种参数传递的方式:
值传递(Pass by Value):这种方式复制了参数实际的值传给函数。我们可以在函数内部改变其值,但是无法作用于函数外部。
经典例子:
void myFunc(int x){
x = 100;
}
int main(){
int var = 20;
myFunc(var);
cou << var;
// 结果是20
}
这种传递是值传递,最原始的函数值没有办法被函数改变。
引用传递(Pass by Reference):引用传递复制了参数的地址给函数。在函数内部,地址可以直接获取“真实的参数”(我看的是英文版,这里引用原文便是"the address is used to access to actual argument in the call")这也就是说,通过地址改变参数,是可以直接影响到参数本身的。
举个栗子:
void myFunc(int* x){
*x = 100;
}
int main(){
int var = 20;
myFunc(&var);
cout << var;
// 结果是100
}
可以看见,我们通过取地址符,直接传递了变量的地址,在函数的声明时说明将指针作为其参数。这样,我们就真正的影响到了变量的值。
? 这下,我一下就弄明白了传说中指针的用途了,并且随着对C++了解的深入,虽然其复杂、灵活、多变,但是我对其功能之完全,能力之强大和程序员对他完完全全的操控无法自拔。
标签:说明 pre 程序 value 获取 内存泄漏 use 很多 不可
原文地址:https://www.cnblogs.com/scyq/p/12275924.html