| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:弱弱问个问题
只看楼主 加入收藏
melody_rain
Rank: 2
等 级:论坛游民
帖 子:19
专家分:10
注 册:2012-7-25
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:10 
弱弱问个问题
void ttest(int a, int b=3)
{
    std::cout<<"a + b = "<<a+b<<std::endl;
}

这种在函数参数列表里给一个参数赋值有什么用处?
我测试过改变第二个参数的值,进入函数的值也不同,那为什么要用这种形式?

谢谢~
搜索更多相关主题的帖子: void 
2012-11-19 18:29
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
第一次见到啊

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-19 19:08
melody_rain
Rank: 2
等 级:论坛游民
帖 子:19
专家分:10
注 册:2012-7-25
收藏
得分:0 
回复 2楼 yaobao
可能我的问的不对,比如这个例子:
cudaError_t cudaGraphicsMapResources (int count, cudaGraphicsResource_t  resources,cudaStream_t stream = 0);

函数声明,最后一个参数赋值为0,有什么意义呢?谢谢~
2012-11-19 19:16
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
经过测试,那个函数的第二个参数属于调用者传入的参数
和那个b=3 无关,至于为啥那样写,不清楚,不乱说了

DO IT YOURSELF !
2012-11-19 19:22
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
收藏
得分:0 
我也测试了半天,发现在我的编译器上通不过。
对对这种用法表示不解。

认认真真的学习,踏踏实实的走路:戒骄戒躁!!!
2012-11-19 19:30
melody_rain
Rank: 2
等 级:论坛游民
帖 子:19
专家分:10
注 册:2012-7-25
收藏
得分:0 
按照我的理解,函数声明的时候之和参数的类型有关,而和参数的具体赋值没有任何关系。
那么cudaError_t cudaGraphicsMapResources (int count, cudaGraphicsResource_t  resources,cudaStream_t stream = 0);
这种形式的赋值,貌似也没有什么用吧?我测试了下,不管声明里怎么给参数赋值,都没有意义啊...
2012-11-19 19:45
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:20 
以下是引用melody_rain在2012-11-19 19:16:43的发言:

可能我的问的不对,比如这个例子:
cudaError_t cudaGraphicsMapResources (int count, cudaGraphicsResource_t  resources,cudaStream_t stream = 0);

函数声明,最后一个参数赋值为0,有什么意义呢?谢谢~
那就是函数最后一个参数一定要传入0 才可以
API函数很多都这样,有个别参数一定是0才可以

DO IT YOURSELF !
2012-11-19 19:50
melody_rain
Rank: 2
等 级:论坛游民
帖 子:19
专家分:10
注 册:2012-7-25
收藏
得分:0 
回复 7楼 wp231957
嗯 了解了,谢谢
2012-11-20 10:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用melody_rain在2012-11-19 18:29:21的发言:

void ttest(int a, int b=3)
{
    std::cout<<"a + b = "<

那是默认值,第二个参数在调用时是可以不写的,比如你调用ttest(1),在函数中,b自己会是3。

授人以渔,不授人以鱼。
2012-11-20 10:16
melody_rain
Rank: 2
等 级:论坛游民
帖 子:19
专家分:10
注 册:2012-7-25
收藏
得分:0 
回复 9楼 TonyDeng
谢谢斑竹,今天试了下,确是如此~
2012-11-20 22:13
快速回复:弱弱问个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013524 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved