前言:
今天姐妹们对“何为引用变量”可能比较关注,兄弟们都需要知道一些“何为引用变量”的相关内容。那么小编也在网络上汇集了一些对于“何为引用变量””的相关知识,希望姐妹们能喜欢,咱们快快来了解一下吧!废话不多说,我们看下面俩段代码有区别吗?
//代码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
很明显,俩段汇编代码是一模一样的,相信到这里,你应该明白了引用变量的本质。
标签: #何为引用变量