您的位置:首页 > 其它

2010.2--Cisco 3750交换机的堆叠

2010-02-23 13:50 375 查看
当返回盏变量
不能成为其它引用的初始值。(可以作为变量的初始值,但这样也就没有必
要返回局部变量了,返回这个局部变量的值就可以了。)
不能作为左值使用。
当返回静态变量或全局变量
可以成为其他引用的初始值
可以作为右值使用,也可以作为左值使用
int& f()
{
static int a=0;
return 0;
}

int &g()
{
int a=0;
return a;
}

int main()
{
int a=g();
int& b=g();
f()=10;
printf("a=%d\n",a);
printf("b=%d\n",b);
printf("f()=%d\n",f());
printf("press enter to ...");
getchar();
return 0;

}

引用b是g函数中的局部变量a的别名,代表了局部变量a的内存空间。g函数调
用结束之后,这个空间被释放,引用b是已经被释放了的内存空间的别名。所以打印
出的b的结果是无法预知的。
这种情况,相当于返回了局部变量的地址,当然会有问题。
函数f()返回的是一个静态局部变量的引用,因此,它可以作为左值来使用。

本文出自 “Linux运维” 博客,请务必保留此出处http://2853725.blog.51cto.com/2843725/1391172
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: