c++中将局部变量的引用作为返回
c++中可以将引用作为返回值,比如下面这个函数
int &c() {
int a = 2;
cout << "a的地址为:" << &a << endl;
return a;
}
局部变量a的地址会被返回,但是局部变量a的内存空间会被释放。
int main()
{
int *p;
p = &c();
cout << "p的内容为:" << p << endl;
cout << "p指向的内容为:"<<hex<<*p << endl;
return 0;
}
运行结果:
如果想要a的内存空间不被释放,那么可以将a写作全局变量或者作为引用值传入函数。
int a;
int &c() {
a = 2;
cout << "a的地址为:" << &a << endl;
return a;
}
int main()
{
int *p;
p = &c();
cout << "p的内容为:" << p << endl;
cout << "p指向的内容为:"<<hex<<*p << endl;
return 0;
}
运行结果:
int &c(int &a) {
a = 2;
cout << "a的地址为:" << &a << endl;
return a;
}
int main()
{
//Huffman h;
//h.show();
int *p;
int a;
p = &c(a);
cout << "p的内容为:" << p << endl;
cout << "p指向的内容为:"<<hex<<*p << endl;
return 0;
}
结果同上。