指针变量作为参数传递给函数的时候, 编译器会将这个指针变量 Copy 一份, 也就说在函数内部使用的这个参数变量, 是另外一个指针变量.
从程序的输出结果, 可以看出 fun() 内部指针变量的地址, 变成了另外一个数值. 不过在 fun() 内部的这个指针变量所指向的内存位置并没有变化, 在函数内部更改该内存位置的数值的话, fun() 外部的指针变量 a 所对应的数值也会被改变.
从程序的输出可以看出, fun() 返回的指针变量也是 copy 了一份到外部的指针变量 b, 只不过指针变量 b 指向的内存空间还是原来的内存空间.
总结:
通过上面的两个程序, 以及其输出结果可以看出, 指针变量在作为参数传递给函数的时候, 与正常的非指针变量的传递方式并没有区别, 都是 copy 一份新的变量. 只不过不同的指针变量都可以指向同一块内存空间, 如此一来只要指针变量指向的内存空间里面的数值更改了, 那么传入参数的指针变量所对应的数值也会跟着改变.
同样的道理, 函数的返回值是指针变量的也是如此.
灰子做于二零一八年十二月二十九日.
[原创内容, 欢迎分享, 拒绝转载, 谢谢尊重!!!]
来源: http://www.jianshu.com/p/ccd3600dc780