爱问知识人 爱问教育 医院库

函数返回值类型的问题

首页

函数返回值类型的问题

请问
int& fn(int n){}
的返回值类型是什么,如果是地址类型,那么和
int *fn(int n){}有什么区别吗?

提交回答
好评回答
  • 2018-03-12 22:09:41
    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生命周期借宿后,它的地址将变得无效

    麻***

    2018-03-12 22:09:41

其他答案

    2018-03-12 16:09:41
  • 不是地址类型,是引用类型。如果是返回地址,那么你return 整型变量名就可以了。需要注意的是不要通过函数的局部变量来返回引用。因为局部变量的地址位于栈区内,函数结束后会被刷新。
    如果是地址类型就返回一个整型地址。

    徐***

    2018-03-12 16:09:41

  • 2018-03-12 15:09:41
  • 不可int & fn(int n)。&是取地址运算符,用来取得地址,在此处无意义。
    要注意:int *fn(int n)中的*也不是寻址运算符!
    *的两种用法:
    1、寻址运算
    例:*p = 3;
    2、声明指针变量(或返回地址的函数)
    例:int *p = &a;
    而&只有取地址一种使用方法。故没有int& fn(int n)
    

    l***

    2018-03-12 15:09:41

类似问题

换一换

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 180-199
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):