Android进阶之路Android开发经验谈

From Java to C++ 第三篇

2021-05-14  本文已影响0人  i校长

前叙

From Java to C++ 第一篇
From Java to C++ 第二篇

风格逆转

前面两篇,以java代码实例的对比,来做了快速的C++转型,但其实那样根本不够,因为在任何一门语言里,最终拼的都是细节处理,为什么C++这么的难学,其实也是细节够多,知识点够复杂导致的,所以接下来我们就针对C++中,也是相对java所特有的一些特性,逐一学习,当然也会有对应的代码举例,来辅助理解。
大家都知道Java中有值传递和引用传递,但在C++中,又多了个指针传递,这到底是怎么回事呢?下面就一起一探究竟。

值传递

image.png

特点:

指针传递

image.png

特点:

为什么用&修饰实参

这就跟&和*在修饰变量名时的作用有关

在指针传递中,传入地址&b,然后在该函数中,通过*a取出&b的地址的值,再进行相关操作。有点绕,但还算可以理解。

引用传递

image.png

特点:

指针和引用的区别

指针和引用都可以通过行参改变实参的值,那么它们到底什么区别呢?
其实这个跟引用规则有很大的关系,来看下引用的规则:

而指针以上规则都没有限制,那是为什么呢?其实指针传递本质上是值传递的方式,它所传递的是一个地址值。其实很多人对这个都不太好理解,你可以这么理解,我们都知道Java多线程中,操作共享内存的变量时,其实都是从共享内存中copy到自己的内存区域中,相当于一个副本,最终操作完以后再同步到共享内存中,达到一个闭环,你可以这么理解指针,但它原理并不是我说的这样,仅供辅助理解。

该如何选择

你可以将指针作为更加灵活的引用使用,当不满足引用规则的时候就使用指针,就这样。

上一篇 下一篇

猜你喜欢

热点阅读