c++书上有
#include<iostream>
using namespace std;
int a[]={1,3,5,7,9};
int main()
{
index(2)=25;
cout<<index(2);
return 0;
}
int &index(int i)
{
return a[i];
}
根本就不能编译啊。。
为什么。。
还有什么是返回引用啊 ,什么时候要用返回引用?
返回引用:
1)主函数main的返回值:这里提及一点,返回0表示程序运行成功。
2)返回非引用类型:函数的返回值用于初始化在跳用函数出创建的临时对象。用函数返回值初始化临时对象与用实参初始化形参的方法是一样 的。如果返回类型不是引用,在调用函数的地方会将函数返回值复制给临时对象。且其返回值既可以是局部对象,也可以是求解表达式的结果。
3)返回引用:当函数返回引用类型时,没有复制返回值。相反,返回的是对象本身。
c++函数的返回值类型---引用&非引用
c++函数返回值类型:引用与非引用的区别在c++中,函数的返回值类型有明显区分,主要分为返回非引用类型和返回引用类型。两种方式在处理数据时有着显著的不同。1. 返回非引用类型 当你调用一个函数并期望函数返回一个新的对象或值时,它通常会返回非引用。这种方式下,函数创建了一个新的对象并将其值返...
c++ 函数返回引用问题
首先,永远不要返回局部变量的引用。因为局部变量在函数返回时被回收,即这个变量不存在了,所以以后对这个变量的引用都是无意义的,结果是不可预知的,程序很可能会崩溃。因此,也就不解释这种情形的结果了。由于静态变量的声明周期直到程序结束,所以返回静态变量的引用是有意义的,而且安全的。下面解释返...
c++返回引用的问题
对于函数的返回值,如果不是引用,那么只是暂时性的,举个例子,一个函数返回了一个int变量,那么当这个变量返回给外部使用后,这个变量的内存就立刻被系统回收了,也就是说这个值再也不存在了。如果返回一个类的对象的话,建议还是把返回值写成引用的形式,这样做有两个好处,第一个是保证了返回的类...
C++返回引用的问题
这里不需要返回引用 如你写的,函数调用结束后,函数栈会被销毁,引用不到了 例子:函数返回值(int Func1())时,要产生一个临时变量作为函数返回值的副本(保存该函数调用中要返回的值),而用引用返回值(int &Func2())时,不产生值的副本。故在用函数返回值定义一个引用(int &ia = Func1...
C++函数返回引用问题
C++为“引用“赋于了新的内涵:当函数的形式参数使用“引用类型”时,函数内对“引用”的操作可以改变原变量的值,而用变量类型作形式参数时是拷贝传值,没有这种优势。返回”引用“的函数在函数名前加一个&,再前面是类型名,比如int &index()是返回一个int型“引用”,因为“引用”是int型某变量...
C++中返回引用的作用是什么?没有&就是不引用也没多大问题吧?
不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了“无所指”的引用,程序会进入未知状态。不能返回函数内部new分配的内存的引用。这条可以参照Effective C++[1]的Item 31。虽然不存在局部变量的被动销毁问题,可对于...
C++ 返回值 引用
引用引用的也是地址,cout<<语句会将地址重新定向,所以返回的地址就不再是引用原来那个值了。就会出现一个奇怪的值。(我执行结果是b:4198699)可以用两个改进办法,一个是把那两句int& f(int &a);改成int f(int &a);这样返回的是值而不是引用,就不会错了。第二个是把子函数里 int c;改...
c++ 返回引用问题
1错2对,引用类似于指针,其实是个地址类的变量。函数中的局部变量其实是在调用栈上分配的,当函数返回时,调用栈中的数据还没被覆盖。所以 int b=fun(); 是可接受的,因为在函数局部变量的数据还没被覆盖时,就通过引用把局部数据赋值给了b. (但这是个不推荐的东东,高手的游戏,初学者慎用)i...
C++返回引用类型
& fun() { int a; a=10; return a; } 这样是不行的,因为a会在fun退出时被销毁,这时返回的a的引用是无效的。这种情况下,如果fun的返回类型不是int & 而是int就没有问题了。因此,要返回一个引用时,“临时变量”不能是“临时”的,至少得等函数外部使用完毕这个引用之后,才能销毁它。
请教c++返回引用问题
第一个程序段主函数中:int &b=B(a);第二个程序段主函数中:int b=B(a);问题就出在这里,第一个b是a的引用,当修改b的值时a的值也改变了。而第二个b是整形变量,系统为它开辟内存空间,修改它的值时a值并不会改变。