龙空技术网

c++揭秘,一秒钟带你深入了解引用变量的本质

我不是你的狗 98

前言:

今天姐妹们对“何为引用变量”可能比较关注,兄弟们都需要知道一些“何为引用变量”的相关内容。那么小编也在网络上汇集了一些对于“何为引用变量””的相关知识,希望姐妹们能喜欢,咱们快快来了解一下吧!

废话不多说,我们看下面俩段代码有区别吗?

//代码1

int main(){

int v0=11;

int &r2v0=v0;

int v1=r2v0;

return 0;

}

//代码2

int main(){

int v0=11;

int *r2v0=&v0;

int v1=*r2v0;

return 0;

}

如果我说上面那俩段代码没有任何区别你信吗?不信的话我们对上面俩段代码的可执行文件分别进行反汇编,反汇编结果如下:

//代码1的汇编代码

00008484 <main>:

8484: e52db004 push {fp} ; (str fp, [sp, #-4]!)

8488: e28db000 add fp, sp, #0

848c: e24dd014 sub sp, sp, #20

8490: e3a0300b mov r3, #11

8494: e50b3010 str r3, [fp, #-16]

8498: e24b3010 sub r3, fp, #16

849c: e50b3008 str r3, [fp, #-8]

84a0: e51b3008 ldr r3, [fp, #-8]

84a4: e5933000 ldr r3, [r3]

84a8: e50b300c str r3, [fp, #-12]

84ac: e3a03000 mov r3, #0

84b0: e1a00003 mov r0, r3

84b4: e24bd000 sub sp, fp, #0

84b8: e49db004 pop {fp} ; (ldr fp, [sp], #4)

84bc: e12fff1e bx lr

//代码2的汇编代码00008484 <main>:

8484: e52db004 push {fp} ; (str fp, [sp, #-4]!)

8488: e28db000 add fp, sp, #0

848c: e24dd014 sub sp, sp, #20

8490: e3a0300b mov r3, #11

8494: e50b3010 str r3, [fp, #-16]

8498: e24b3010 sub r3, fp, #16

849c: e50b3008 str r3, [fp, #-8]

84a0: e51b3008 ldr r3, [fp, #-8]

84a4: e5933000 ldr r3, [r3]

84a8: e50b300c str r3, [fp, #-12]

84ac: e3a03000 mov r3, #0

84b0: e1a00003 mov r0, r3

84b4: e24bd000 sub sp, fp, #0

84b8: e49db004 pop {fp} ; (ldr fp, [sp], #4)

84bc: e12fff1e bx lr

很明显,俩段汇编代码是一模一样的,相信到这里,你应该明白了引用变量的本质。

标签: #何为引用变量