int func (int &a,int &b)与int func (int a,int b)的区别

wudichaoren2010 2014-10-18 03:01:37

#include <iostream>
using namespace std;
int func (int &a,int &b)
{
a = 5;
b=10;
return a+b;
}
void main()
{
int c = 1;
cout<<"c="<<c<<endl;
int a=3,b=8;
c=func(&a,&b);
cout<<"c="<<c<<endl;
}


如果我想让返回值是11,请问如何修改?
...全文
1194 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-10-18
  • 打赏
  • 举报
回复
我觉得楼主还是先好好看看书,这其实不是什么难的问题,只是你对函数执行还没有理解透彻啊
芳草源 2014-10-18
  • 打赏
  • 举报
回复
引用 7 楼 wudichaoren2010 的回复:
[quote=引用 1 楼 hulifangjiayou 的回复:] 首先,你的func函数的两个参数的类型都是引用类型,你在调用函数的时候传递的是两个地址【 c=func(&a,&b);】 引用就是别名,调用时你直接使用变量名,形参是实参的别名,指向相同的空间呐。修改后的程序如下:(修改的地方已标注)
#include <iostream>
using namespace std;
int func (int &a,int  &b)
{
//   a = 5;   //修改1
//   b=10;    //修改2
    return a+b;
}
void main()
{
    int c = 1;
    cout<<"c="<<c<<endl;
    int a=3,b=8;
    c=func(a,b);  //修改3
    cout<<"c="<<c<<endl;
}
int func (int &a,int &b) 这里引用的整型变量 a和b 是main里面的a和b 还是func里面的a和b ???[/quote]是func里面的形参引用main里面的实参呐,func里的ab只是别名而已,指向的内存空间还是main里面定义的ab。
勤奋的小游侠 2014-10-18
  • 打赏
  • 举报
回复
引用 9 楼 wudichaoren2010 的回复:
[quote=引用 6 楼 lovesmiles 的回复:] 函数是被调用才生效的,你的func在之前叫做定义,在main函数内部叫做调用。所以func的赋值比main的赋值要后面
那么想让a和b加起来变成11该如何操作?[/quote] 二楼已经代码都写好给你了,直接copy去用就行了。
wudichaoren2010 2014-10-18
  • 打赏
  • 举报
回复
引用 6 楼 lovesmiles 的回复:
函数是被调用才生效的,你的func在之前叫做定义,在main函数内部叫做调用。所以func的赋值比main的赋值要后面
那么想让a和b加起来变成11该如何操作?
wudichaoren2010 2014-10-18
  • 打赏
  • 举报
回复
引用 1 楼 hulifangjiayou 的回复:
首先,你的func函数的两个参数的类型都是引用类型,你在调用函数的时候传递的是两个地址【 c=func(&a,&b);】 引用就是别名,调用时你直接使用变量名,形参是实参的别名,指向相同的空间呐。修改后的程序如下:(修改的地方已标注)
#include <iostream>
using namespace std;
int func (int &a,int  &b)
{
//   a = 5;   //修改1
//   b=10;    //修改2
    return a+b;
}
void main()
{
    int c = 1;
    cout<<"c="<<c<<endl;
    int a=3,b=8;
    c=func(a,b);  //修改3
    cout<<"c="<<c<<endl;
}
int func (int &a,int &b) 这里引用的整型变量 a和b 是main里面的a和b 还是func里面的a和b ???
勤奋的小游侠 2014-10-18
  • 打赏
  • 举报
回复
函数是被调用才生效的,你的func在之前叫做定义,在main函数内部叫做调用。所以func的赋值比main的赋值要后面
勤奋的小游侠 2014-10-18
  • 打赏
  • 举报
回复
引用 3 楼 wudichaoren2010 的回复:
[quote=引用 2 楼 lovesmiles 的回复:] int func (int &a,int &b) { a = 5; b=10; return a+b;//5+10=15你到底有没有学过数学,你函数就只能返回15 ,和参数是什么有什么关系? }
我在main函数中给a和b又重新赋值了[/quote] 哎,你c语言的基础没学好啊,你func函数里面的赋值在后面,紧接着就相加了,你main函数的赋值有什么用? 这个真的是很基础的c语言函数知道。好好看书吧。
wudichaoren2010 2014-10-18
  • 打赏
  • 举报
回复
引用 1 楼 hulifangjiayou 的回复:
首先,你的func函数的两个参数的类型都是引用类型,你在调用函数的时候传递的是两个地址【 c=func(&a,&b);】 引用就是别名,调用时你直接使用变量名,形参是实参的别名,指向相同的空间呐。修改后的程序如下:(修改的地方已标注)
#include <iostream>
using namespace std;
int func (int &a,int  &b)
{
//   a = 5;   //修改1
//   b=10;    //修改2
    return a+b;
}
void main()
{
    int c = 1;
    cout<<"c="<<c<<endl;
    int a=3,b=8;
    c=func(a,b);  //修改3
    cout<<"c="<<c<<endl;
}
为什么在main里面重新赋值无效呢?
wudichaoren2010 2014-10-18
  • 打赏
  • 举报
回复
引用 2 楼 lovesmiles 的回复:
int func (int &a,int &b) { a = 5; b=10; return a+b;//5+10=15你到底有没有学过数学,你函数就只能返回15 ,和参数是什么有什么关系? }
我在main函数中给a和b又重新赋值了
勤奋的小游侠 2014-10-18
  • 打赏
  • 举报
回复
int func (int &a,int &b) { a = 5; b=10; return a+b;//5+10=15你到底有没有学过数学,你函数就只能返回15 ,和参数是什么有什么关系? }
芳草源 2014-10-18
  • 打赏
  • 举报
回复
首先,你的func函数的两个参数的类型都是引用类型,你在调用函数的时候传递的是两个地址【 c=func(&a,&b);】 引用就是别名,调用时你直接使用变量名,形参是实参的别名,指向相同的空间呐。修改后的程序如下:(修改的地方已标注)
#include <iostream>
using namespace std;
int func (int &a,int  &b)
{
//   a = 5;   //修改1
//   b=10;    //修改2
    return a+b;
}
void main()
{
    int c = 1;
    cout<<"c="<<c<<endl;
    int a=3,b=8;
    c=func(a,b);  //修改3
    cout<<"c="<<c<<endl;
}

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧