函数返回值类型的问题
请问 int& fn(int n){} 的返回值类型是什么,如果是地址类型,那么和 int *fn(int n){}有什么区别吗?
int& f(int n){}和int *fn(int n){}完全不同,前者返回的是引用,后者返回的是指针 比如: int a = f(...); int *b = fn(...); int c = a + (*b); cout << c << endl; 两者具很大吧。 其实主要是分辨 int& f1(..)和int f2(..)的区别。 比如: int a = f1(); int b = f2(); int c = a + b cout << c << endl; 看起来没区别吧,实际区别很大。 由于f1返回的是引用,所以a指向f1中返回变量的地址,但返回变量的值并没保存于a中 f2则不同,返回变量的值保存于b中 所以两者的差别在效率上的差异。 注意:f1中返回引用的那个变量千万不要在栈中分配,不然在f1生命周期借宿后,它的地址将变得无效
不是地址类型,是引用类型。如果是返回地址,那么你return 整型变量名就可以了。需要注意的是不要通过函数的局部变量来返回引用。因为局部变量的地址位于栈区内,函数结束后会被刷新。 如果是地址类型就返回一个整型地址。
不可int & fn(int n)。&是取地址运算符,用来取得地址,在此处无意义。 要注意:int *fn(int n)中的*也不是寻址运算符! *的两种用法: 1、寻址运算 例:*p = 3; 2、声明指针变量(或返回地址的函数) 例:int *p = &a; 而&只有取地址一种使用方法。故没有int& fn(int n)
答:哎哟 就是所谓的一个过程 比如你一个加法函数 让你输入2个加数 函数返回其结果 当然就是要返回值的 但如果你的函数就是要干某个过程 比如在屏幕上打印出一段话 当...详情>>
答:读指针用来记录文件当前文件之前的读取位置,它指向下一个将要读取的信息项详情>>
答:网上买2手的也就几块钱而已详情>>