C++中引用的问题,请问如何理解这段代码??

2024-12-31 15:25:57
推荐回答(3个)
回答1:

这个嘛,首先你看到&不能就想到引用啊,&有很多种意思啊,首先你要按照C语言的思维来想,&就有两个意思,一个是取一个变量的地址,另一个是“二进制按位与”操作,然后再说在C++中,&有了一个引用的操作,但是引用的定义只在变量声明中啊,不是随便就都是引用的。

为什么说先从C语言的角度来说呢,是因为C++几乎是完全兼容C语言的,你不要考虑说C和C++查多少。

就好像int& i;是定义一个int类型的引用,但是这个&出现在除了变量定义意外的任何地方,都不是引用的意思。

因为&作为二进制与的操作需要两个操作符(例如a&b),所以很显然这个操作是一个取地址操作,所以也就是返回变量i的地址。当然在你这个函数的情况下,这个操作是很危险的,因为i是局部变量,局部变量在函数返回的时候会收回地址空间,所以返回的指针会变成俗称的野指针(这并不是说i的值就会改变,野指针就好像你租了个房子,然后退租了,退租了之后这个房子和房子里面的东西可能一点不变,但是那已经不属于你了,你就不应该使用它了)

第二个i返回的就是int类型的i,这里可能会做一个隐含的转换,从int类型到int*类型,在部分编译器这个转换可能不会提示出错。

回答2:

不安全的函数
第一个,返回局部变量l的地址
第二个,返回0x00000001地址

回答3:

都是错误的程序