返回值直接用传参,就不会报错?函数返回引用碰到的怪现象,该怎么处理
返回值直接用传参,就不会报错?函数返回引用碰到的怪现象
正在看:返回引用,要求在函数的参数中,包含有以引用方式或指针方式存在的,需要被返回的参数。算是能死记住,但是一敲代码,问题就来了......试了下直接返回普通传参......
返回值直接用传参,就不会报错?函数返回引用碰到的怪现象,想想可能是因为不操作,就不会初始化吗?还是其他原因?
这是直接返回传参的写法,只有warning:
如下写法则会报错:
既然规定是必须用引用或者指针类型做返回值,那是否应该连直接返回都不行?
或者我太纠结细节了么?只要没有修改到啥?....
------解决方案--------------------
第一个,返回局部变量的引用,警告
第二个,返回 临时变量的引用,直接错误。
语法规定。
------解决方案--------------------
------解决方案--------------------
你返回局部变量的引用了。
正在看:返回引用,要求在函数的参数中,包含有以引用方式或指针方式存在的,需要被返回的参数。算是能死记住,但是一敲代码,问题就来了......试了下直接返回普通传参......
返回值直接用传参,就不会报错?函数返回引用碰到的怪现象,想想可能是因为不操作,就不会初始化吗?还是其他原因?
这是直接返回传参的写法,只有warning:
- C/C++ code
#include <stdio.h> #include <stdlib.h> int &func(int t) { return t; //This line: [Warning] reference to local variable 't' returned [enabled by default] } int main(int argc, char * argv[]) { int a=0; int b=func(a); printf("&a=0X%08X,&b=%08X\n",&a,&b); return 0; }
如下写法则会报错:
- C/C++ code
#include <stdio.h> #include <stdlib.h> int &func(int t) { return t+1; //This line: [Error] invalid initialization of non-const reference of type 'int&' from an rvalue of type 'int' } int main(int argc, char * argv[]) { int a=0; int b=func(a); printf("&a=0X%08X,&b=%08X\n",&a,&b); return 0; }
既然规定是必须用引用或者指针类型做返回值,那是否应该连直接返回都不行?
或者我太纠结细节了么?只要没有修改到啥?....
------解决方案--------------------
第一个,返回局部变量的引用,警告
第二个,返回 临时变量的引用,直接错误。
语法规定。
------解决方案--------------------
------解决方案--------------------
你返回局部变量的引用了。