f(int i)与g(int &i)的区别是什么
答案:3 悬赏:70
解决时间 2021-02-13 02:59
- 提问者网友:单纯说谎家
- 2021-02-12 05:25
f(int i)与g(int &i)的区别是什么
最佳答案
- 二级知识专家网友:不羁的心
- 2021-02-12 06:38
f(int i)和g(int &i)的区别在于是否改变i的值。
对于f函数来说,i是一份参数拷贝,
对于g函数来说,i则是a的别名。
所以,g函数会修改传入的值。而f函数则不会。
a+=f(g(a));中,先计算g(a)=g(0) = 1,且a此时=1;
再计算f(g(a))=f(1) = 2;
最后计算a+=f(g(a)); 即a+=2;即a=a+2=1+2=3;
对于f函数来说,i是一份参数拷贝,
对于g函数来说,i则是a的别名。
所以,g函数会修改传入的值。而f函数则不会。
a+=f(g(a));中,先计算g(a)=g(0) = 1,且a此时=1;
再计算f(g(a))=f(1) = 2;
最后计算a+=f(g(a)); 即a+=2;即a=a+2=1+2=3;
全部回答
- 1楼网友:青灯壁纸妹
- 2021-02-12 08:14
g(int&i)是引用传递,也就是当变量自己传进去,这样操作的就是变量本身,所以g(a)返回的是1,这个时候会有一个副作用,那就是a 也变成了1 。而f(int&i)只是返回i+1,并不会修改实参。
所以a += f(g(a)) 也就是 a = f(g(a)) + a ,会先执行函数,g(a)返回的是1,同时a 也是1 ,f(1)返回的是2 ,所以 a = 2 + 1 ,也就是 3 。因为f(x)不会修改 实参,所以 b = f(f(b)) + b ,就是b = 2 + 0 ,
- 2楼网友:冷态度
- 2021-02-12 07:25
int (*f)(int,int)——f是个指针,指向一个具有两个int形式参数、返回int值的函数。
int (*f[3])(int)——f是个数组,数组的每个元素都是指针,这些指针是指向具有一个int形式参数、返回int值的函数的。
int f(int x,int y)——f是个函数,它有两个int型形式参数,返回int值。
int *f(int,int)——f是个函数,它有两个int型形式参数,返回指向int值的指针。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯