c++函数的直接返回和用引用返回有什么区别,希望大神回答具体点

源码导航 其他问答 1
#include <stdio.h>

static void func(int i_SrcNum, int &i_result)
{
    i_result = i_SrcNum;
    return ;
}

static int func(int i_SrcNum)
{
    return i_SrcNum;
}

int main(int argc, char **argv)
{
    int a = 0;
    int b = 100;
    func(b, a);
    printf("%d\n", a);

    a = func(b);
    printf("%d\n", a);

    return 0;
}

以上程序用到的函数func(int i SrcNum, int &i result)和int func(int i_SrcNum)两个函数有什么区别,安全等等方面麻烦回答详细一点谢谢。

回复

共2条回复 我来回复
  • 毕设客栈
    这个人很懒,什么都没有留下~
    评论

    函数func(int i SrcNum, int &i result)和int func(int i_SrcNum),一个是传递数值,一个是传递地址,传递地

    址的能保持数值,a = func(b)确实被调用了,但是a的值不能保持下去,所以返回原来的值。

    0条评论
  • 毕设导航
    这个人很懒,什么都没有留下~
    评论

    第一个不存在拷贝,直接返回形参(有安全隐患,因为形参在函数结束后会失去作用范围,处于不可控的状

    态,俗称 释放)。

    第二个实际是返回了形参的一个临时的拷贝对象,这个是没有问题的。

    0条评论

发表回复

登录后才能评论