阅读:1516回复:20
这个的结果是?int& f() { int i=1; return i;} int g() {int j =2; return j;} main() { int &ri=f(); int rj=g(); printf(\"\\n%d:%d\\n\",ri,rj); return 0; } :D |
|
|
沙发#
发布于:2003-05-07 21:46
0 2?
|
|
|
板凳#
发布于:2003-05-07 21:48
0 2? no :D |
|
|
地板#
发布于:2003-05-07 21:54
想。。
|
|
|
地下室#
发布于:2003-05-07 22:07
不是1 2吗?呵呵~~ :D
|
|
|
5楼#
发布于:2003-05-07 22:11
当然不是1,2了
是的话就不放在这了 :D |
|
|
6楼#
发布于:2003-05-07 22:13
zydcat,快上MSN! :D
|
|
|
7楼#
发布于:2003-05-07 22:17
zydcat,快上MSN! :D 偶在学校里登不上msn 用代理也不行 :( |
|
|
8楼#
发布于:2003-05-08 07:27
2 2
为什么? 想不明白。上一个不是引用吗? |
|
|
9楼#
发布于:2003-05-08 10:23
2 2 答对了,100分 :D |
|
|
10楼#
发布于:2003-05-08 10:37
好奇怪的结果呀!
俺刚才调试了一下 如果没有int rj=g(); 则ri=1呀! 如果运行了rj=g(); 则ri=2怪! zydcat可以给俺们解释一下吗? |
|
11楼#
发布于:2003-05-08 10:38
把局部变量往外引用?
明明有问题阿~~ 俺是不是记错了~ :( |
|
|
12楼#
发布于:2003-05-08 10:46
把局部变量往外引用? 有道理,问题应该就出现在这个局部变量的引用上了! |
|
13楼#
发布于:2003-05-08 10:51
呵呵
那是因为i和j都是局部变量,当i被释放后,j紧接着又被分配了这个空间,而此时ri是i的一个引用,即ri中的值就是i和j的值,所以出现这种情况,可以看看i和j的地址是一样的。所以在函数g中,不管j 被赋予何值,最后的结果就是两个这个值。 wz88说的对,局部变量的地址是不能作为返回值的,会出现一些意向不到的错误。 这里只是拿出来玩玩,呵呵 :D |
|
|
14楼#
发布于:2003-05-08 10:55
不错不错
|
|
15楼#
发布于:2003-05-08 15:30
晕,当成引用了,所有怎么想也不明白:(
|
|
|
16楼#
发布于:2003-05-08 15:53
这种问题,看汇编最明白。
写公司的产品,千万别用这种迷惑人的手法。 |
|
17楼#
发布于:2003-05-08 19:11
nod nod ....kick zycat pp! :D
|
|
|
18楼#
发布于:2003-05-08 19:14
这种问题,看汇编最明白。 ft 这是一本c++书上的习题,我也差点晕了 :D |
|
|
19楼#
发布于:2003-05-09 00:22
出这种题目,主要还是浪费大家时间,虽然对你了解很多细节有帮助,但语言毕竟是一种工具不是?花那么多时间是否值得?是不是应该平衡一下,花点时间在其他事情上。
|
|
上一页
下一页