首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数概念

函数概念
EN

Stack Overflow用户
提问于 2010-04-20 12:41:40
回答 4查看 135关注 0票数 3
代码语言:javascript
复制
void execute(int &x,int y=100)
{
 x=x+y;
 cout<<x<<endl;
}
void main()
{
 int a=5,b=6;
 execute(b);
}

尽管没有给x赋值(函数原型中的形参),下面的程序仍然可以工作。

EN

回答 4

Stack Overflow用户

发布于 2010-04-20 12:44:40

是的,它会工作的。通过不将默认值分配给x,可以强制调用者将一个值作为参数进行传递。当您在main中执行execute(b)时,您将引用x与实际参数'b‘绑定在一起,并且由于您没有将任何值传递给变量'y’,因此将使用默认值。

票数 4
EN

Stack Overflow用户

发布于 2010-04-20 12:54:49

首先,在C++中没有“函数原型”这样的东西。"Prototype“是一个来自C语言的术语,在C++中没有什么有意义的应用。这里有一个函数声明,它恰好也是一个函数定义。

其次,您似乎在问是否需要为C++中的所有函数参数指定默认参数,对吗?如果是这样,答案是否定的,没有必要为所有函数参数指定默认参数。

第三,应该是int main,而不是void main

票数 3
EN

Stack Overflow用户

发布于 2010-04-20 12:55:07

您运行execute(b),这意味着execute将运行b = b + 100 (y是100,因为您没有传入它,并且它获得了默认值),打印出106,b将在main中修改回来,因为它是通过引用获取的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2672589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档