传智播客标杆人物刘爽:关于c++中的引用

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/04 12:36:05
#include <iostream.h>

int main()
{
int x=3, &y=x;

{ int t;
int &y=t;
cout<<"t="<<t<<endl;
}

return 0;
}

请问最后t得到一个的值是什么,运行结果是t=-858993460
谢谢各位,t的取值已基本了解,但我还是有些问题,详细描述如下:
最初提这个问题是因为看到《C++大学教程》里一个常见编程错误,原文是这样“将前面声明的引用重新变成为另一个变量的别名是个逻辑错误,只是将已经是别名的引用的地址赋给另一个变量”,所以我希望把y重新作为t的别名,来看看错误结果,不过我觉得把int &y=t放到块内,并没验证到结果。
现在我对于原文的那句话还是很困惑,希望能得到大家的帮助,希望你能给一个验证的代码,或是做一个完整的解释,谢谢。

我学的是C,看你这个变量t始终没有赋过值,想必程序在输出时只会输出随机值,因为程序在运行时随机的给t分配一个内存单元,该单元的值不定.
{ int t;
int &y=t;
cout<<"t="<<t<<endl;
}
这段里的y与main函数中的y不同,与作用域有关.
对于你所说的"将前面声明的引用重新变成为另一个变量的别名是个逻辑错误",这个可以理解,如:
#include <iostream.h>

int main()
{
int x=3, &y=x;

int t=5;
int &y=t;
cout<<"t="<<t<<endl;

return 0;
}
这个编译就编译不能通过,1 error(s), 0 warning(s).
而你说的"只是将已经是别名的引用的地址赋给另一个变量"非常令人费解!整句话都是在饶舌嘛~~足见编者水平^^建议你直接向老师直接提问....

t没有赋初值,得到的是随机的值,你的机器是-858993460,其它机器可能是别的值。此题跟引用无关,外层的变量y和内层的y不相干的。

请问最后t得到一个的值是什么,运行结果是t=-858993460

其实这个t就是
{ int t;
int &y=t;
cout<<"t="<<t<<endl;
}
main函数里面未定义t.而上面的代码块定义的t.

由于域的关系.代码块里的y代表t.而回到main函数里y又恢复代表x.
但是不存在引用的应用.

这道题和引用无关 最后输出的T值没有赋初始值,随意系统任意赋予一个随机值给T 最后输出。

这个好像和引用没有什么关系吧。
你在在第二个定义的时候"int &y=t"的时候,把一个没有初始化的变量定义成了一个别名,所以值应该是以随机的。
和第一个"int &y=x"没有关系,也引用也没有关系。