从C语言、C++、Java到Python,那些指针在历史进程中的演化

671 2023-03-30 10:10

1. C语言只有一种参数传递方式,称之为“值传递”,它能自带演化出一种地址传递的能力,但本身还是值传递。

2. C语言不支持引用传递,如下图。

完整代码:

结果:

3. C++的引用传递,本质上就是一个指针常量const *p

运行结果:

4. Java的“共享对象引用”传递

运行结果:

5. Python的可变对象引用传递

结果:

趣味:

java和python都是高级语言,python甚至是脚本语言,人脑将它设计的更接近于人类的任务思维。java更趋向于基础实现的方便。有意思的是,java传字符串参数时,在传进去的瞬间,实参就已经指向了拷贝副本的引用,当然了对于类引用的传递还是遵循共享对象引用传递策略的,python也是在传进函数后有赋值才会改变实参的引用。所以才有了可变对象传入形参能够可变的本领。

全部评论

·