指针与变量

作者:知乎用户
链接:https://www.zhihu.com/question/26623283/answer/33493657
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

变量
一个东西在内存里面,而你想用语言去表示那个东西,就必须找到一个符合去表示它。[它可以是常量、变量]。

int a = 2;
就是把2这个值,放在了内存中。(但是你不知道它的位置,如果你有看到整个内存的能力,你有可能发现有一个2在No.300处)
但是你想去调用它,必须有一个东西代表它,于是用变量a代表了这块内存中的内容.

有了变量,你就可以用他传递值,调用它、修改它,玩弄它,让他欲罢不能。

指针
如果你只有这一行程序的话,那指针就没有太大的存在必要了。
但是如果你有好几个函数需要读写这个值,那么这时候问题就来了。
int myMoney = 1000;
如果你的账上有1000元,有好几个函数要操作这个值,这时候就会产生两种需求。
在函数里修改这个值的时候是应该修改原值呢? 还是不修改原值?

如果使用foo(myMoney)这种形式的话,就会把myMoney代表的内存中的内容“复制”一份到函数栈里,这样你在函数里修改这个值不会对外界有任何影响。

但是,如果你想在函数中对原值进行操作,这时候就不能只传进来内容,而需要传进来一个myMoney的地址,这样,在函数里面就能再程序找到那块地址,把内容修改掉。

所以有了传递地址的需求。为了方便传递地址,所以有了指针,指针也是一个变量,只不过里面存的内容是一个地址。

总结地来说, 变量为了表示数据而生, 指针为了传递数据为生。

-------------- 抛翔引玉 ---------------
还望各位大神多批评。
原文地址:https://www.cnblogs.com/feng9exe/p/7272779.html