C中参数传递中C++引用指针

2024-11-13 07:54:31
推荐回答(2个)
回答1:

引用可以看作一个常量指针,如:
int a=10;
int &b=a;
const int *c=&a
上面两句的含义差不多。

对于简单应用,从低层的实现来看是一样的:
int a=10;
int *b=&a;
生成这样的代码
mov [ebp],10
lea eax,[ebp]
mov [ebp-10],eax

引用:
int a=10;
int &b=a;
生成同样的代码
mov [ebp],10
lea eax,[ebp]
mov [ebp-10],eax

但是在进行参数传递时就出现了不一样。
下面拷贝了关于函数传递指针和引用的讨论中一段内容,实在懒得写了,楼主凑合看吧。

参数传递指针时将直接对指针指向的地址进行操作
传递指针的引用时,通过间接寻址,来实现对〔指针指向的地址〕进行操作。
看看下面一段程序反汇编后的内容就很清楚了

回答2:

引用是C++提出来的概念,在C中没有这一概念
你所说的是叫 指针的引用,写法
char * myp = new char[20];
char * &rpc = myp;

引用的方便之处,在于它是一个别名,不是变量,不占内存