- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章函数与预处理
4.9 函数的可变参数 格式: 返回类型 函数名(int num,形参类型 arg , …) { 函数体 } * * * * * * * * * * * * * * * * * * 1、在定义或说明函数时,给参数赋以初值。 2、具有缺省值的参数位于形参列表的右侧。 3、同一个作用域内,缺省参数只能有一个值。 4、调用函数时,缺省参数的值以实参为准;若没有实参,则为定义时的缺省值。 例如:void print(int a,int b,int c=5,int d=10){ couta‘\t’b ‘\t’c ‘\t’d ‘\n’; } void main(){ print(1,2,3,4); print(1,2,3); print(1,2); print(1); print();} 4.7 有默认参数的函数 1、所定义的函数,同名异参(个数或类型)。 2、仅函数类型不同,不能构成重载关系。 3、调用函数时,根据参数确定所调用的函数。 如: int abs(int a){ return a0?a:-a; } int abs(int a,int b){ return ab?a-b:b-a; } float abs(float a,float b){ return ab?a-b:b-a; } void main() { float x=-5.5,y=-10.8; coutabs(5)\tabs(-5)\n; coutabs(5,10)\tabs(x,y)\n; coutabs(-5.5)\tabs(-5.5,-10.8)\n; } 程序中能否增加如下函数? float abs(int a){ return a0?a:-a; } 4.8 函数重载 int main() { coutadd(3,1,2,3,0)endl; //必须以0结尾,参数列表结束的判断条件是读到0停止 return 0; } #includecstdarg #includeiostream using namespace std; int add(int num,int pre...) { //求和函数 va_list vl; int sum=pre; //先取得第一个可变参数值 int nArgValue; va_start(vl,pre); do { nArgValue = va_arg(vl,int); sum+=nArgValue; }while(nArgValue!=0); //自定义结束条件是输入参数为0 va_end(vl); return sum; } va_list vl:就是一个char *指针。 va_start(vl,data):就是取到data之后的参 数,也就是可变参数的首地址。 va_arg(vl,int):从当前内存位置取一个int 类型的参数,并把指针后推相应距离。 va_end(vl):就是把用完的指针置0 一般可用第一个参数表示需要传递的参数个数 也可以用传递进来的num来控制循环 函数本质上是全局的,因为一个函数要被另外的函数调用。 也可以指定函数只能被本文件调用,而不能被其他文件调用。 根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。 4.10 内部函数和外部函数 如果一个函数只能被本文件中其他函数所调用,它称为内部函数。 在定义内部函数时,在函数名和函数类型的前面加static。函数首部的一般格式为 static 类型标识符 函数名(形参表) 如: static int fun(int a,int b) 内部函数又称静态(static)函数。使用内部函数,可以使函数只局限于所在文件。 4.10.1 内部函数 在定义函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数是外部函数,可供其他文件调用。 如函数首部可以写为: extern int fun (int a, int b) 这样,函数fun就可以为其他文件调用。 在定义函数时省略extern,则默认为外部函数。 4.10.2 外部函数 例4.15 输入两个整数,要求输出其中的大者。用外部函数实现。 file1.cpp(文件1) #include iostream using namespace std; int main( ) {extern
文档评论(0)