商城网站制作需要多少费用,wordpress insert,网站seo网络优化,中国建设网官方网址TIPS 2. 3. 4.
引用的底层本质
在语法层面上的话#xff0c;这个引用是不开空间的#xff0c;相当于是对一个变量进行一个取别名的这么一个操作。在底层实现上实际是有空间的#xff0c;因为引用是按照指针方式来实现的。然而如果你从底层的角度去看的话#xff0c;因…TIPS 2. 3. 4.
引用的底层本质
在语法层面上的话这个引用是不开空间的相当于是对一个变量进行一个取别名的这么一个操作。在底层实现上实际是有空间的因为引用是按照指针方式来实现的。然而如果你从底层的角度去看的话因为编译器汇编之后就会生成汇编指令 首先在汇编指令当中你会发现比方说我需要把a的地址放到变量pa当中去他并不是直接给他放进去而是必须借助于寄存器缓冲这样子的做中转这是一般的原则主要是内存太太慢了因此相当于这些操作任务都是由寄存器啊缓存啊来外包的因为寄存器和缓存的话速度比较快。对于汇编代码指令当中如果你勾选的是显示符号名的话那么这时候 [ a ]就表示a这个变量的地址比方说a的地址是0E4H那么这时候[0E4H]与[a]都表示同一个意思就是a的地址。lea就是加载有效地址的意思是直接把地址给他加载进去纯地址。如果你从底层汇编指令实现的角度来看引用是类似指针的方式实现的说明在底层其实没有引用只有指针。所以从语法的角度来看引用的话是不会开空间的但是你从底层的角度来看的话引用它还是在开空间的因此传参的时候引用和指针在底层上面消耗都是一样的
引用和指针的不同点
引用概念上定义一个变量的别名指针存储一个变量地址。引用在定义时必须初始化指针没有要求引用在初始化时引用一个实体后就不能再引用其他实体而指针可以在任何时候指向任何一个同类型实体没有NULL引用但有NULL指针在sizeof中含义不同引用结果为引用类型的大小但指针始终是地址空间所占字节个数(32位平台下占4个字节)引用自加即引用的实体增加1指针自加即指针向后偏移一个类型的大小有多级指针但是没有多级引用访问实体方式不同指针需要显式解引用引用编译器自己处理引用比指针使用起来相对更安全