返回函数局部变量的指针和引用
返回函數(shù)局部變量的指針和引用是不允許的,容易造成野指針。不管是通過(guò)返回值或者出參返回局部變量的指針都是不允許的。
但針對(duì)各種情況,可以具體研究一下返回函數(shù)指針和引用的異常情況。
?
例子1:
#include <iostream>
using namespace std;
void ChangePoint(int **p2)//入?yún)㈩愋蜑橹赶蛑羔樀闹羔槨?br /> {
?int num = 8;
?*p2 = #/
?p3 = ChangePoint3();
?ChangePoint(&p2);
?cout << *p1 <<' '<< a << ' '<<*p2 << ' '<< *p3;
?return 0;
}
不能返回局部變量的引用給一個(gè)引用變量。但是如果返回引用給一個(gè)相關(guān)的非引用變量的話是可以的。
例子2:
#include <iostream>
using namespace std;
int& fun()
{
?int i = 100;
?return i;
}
void test()
{
?int i = 0;
}
int main()
{
//?int& a = fun();//返回的是局部變量i的引用,即地址,有問(wèn)題。相當(dāng)于int &a = i;??int a=fun();//返回的是局部變量i的值,沒(méi)有問(wèn)題,相當(dāng)于int a = i;
//?test(); //此處由于fun后沒(méi)有其他代碼,所以輸出值沒(méi)問(wèn)題,若將test函數(shù)打開(kāi),則a的值會(huì)有問(wèn)題。
?cout << a << endl;
?return 0;
}
可以參考:
http://topic.csdn.net/u/20120729/11/823C8AE6-691D-4BAB-A874-971836CF00C4.html
總結(jié)
以上是生活随笔為你收集整理的返回函数局部变量的指针和引用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 提高C++代码质量 - [083]不要返
- 下一篇: Linux驱动程序开发 - 设备IO