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;
}

运行结果:

c++中将局部变量的引用作为返回

如果想要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;
}

运行结果:

c++中将局部变量的引用作为返回

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;
}

 

结果同上。