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,请问如何修改?
...全文
1035 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
li4c 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;
}
“中级/进阶篇”讲解特点与内容:         本“中级”与“进阶”篇, 是面向初中级游戏研发人员,以及Unity中高级学习者。为了更加深入的刨析各个语法的本质,我们采用反编译解读IL中间语言的方式,来解构语法重点与难点。 中级篇内容主要讲解: .Net 框架、里氏替换原则(LSP)、类的属性极其本质特性、IS ,AS 关键字、字符串的“驻留性” 原理、深入解析Equals() 原理、枚举类型、自定义集合、深入解析动态集合特性与内部原理、泛型集合、泛型约束、初级委托与事件讲解等。 进阶篇是在中级篇的基础之上,进一步研究与讲解关于IO操作、序列化、正则表达式、系统委托(Action、Function、Predicate等)、反射原理与特性、Linq查询表达式、多线程、线程池、任务、Socket套接字编程(Tcp与UDP协议),以及最后使用Unity开发具备实战价值的通讯聊天程序等。C#“进阶篇”教学详细说明如下:1: IO操作与序列化      学习文件、目录、二进制文件、文本文件的读取与写入底层原理。学习文件序列化与反序列化技能。2: 正则表达式      学习正则表达式的强大作用与常用原字符的含义与应用场景。3: 深入委托与事件      学习Action、Func、Predicate 系统内置委托类型,已经适用场合。学习匿名方法、Lambda表达式。深入解析委托与事件的区别。4: 反射与特性      学习反射的概念与动态调用的重要应用价值,以及Type、Assembley核心类等,最后讲解“特性”技术。5: Linq 查询表达式     学习Linq 查询表达式对于“对象集合”(支持IEnumberable 或IEnumberable) 以及SQL数据库、XML文档方面的强大查询功能。    6: 多线程     学习多线程以及线程传参、线程取得返回数值技术,前台与后台线程、线程的同步、线程池、任务等技术。   7: Socket套接字通讯     学习Socket套接字通讯中,Tcp与UPD通讯协议的不同应用场景,以及各自的演示示例,最后用Unity开发一款实用性的聊天通讯工具。温习提示:           本C# for Unity 使用Virtual Studio2012,以及Unity5.2 进行开发与讲解。(学员使用更高版本,对学习没有任何影响)。      A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422

64,637

社区成员

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

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