ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++深度解析(5)—函数参数的扩展

2019-07-17 19:38:10  阅读:195  来源: 互联网

标签:默认值 int C++ 占位 函数参数 参数 默认 printf 解析


1.函数参数的默认值

  • C++中可以在函数声明时为参数提供—个默认值
  • 当函数调用时没有提供参数的值,则使用默认值
#include <stdio.h>

int mul(int x = 3);

int main(int argc, char *argv[])
{
    printf("mul(2) = %d\n", mul(2));  // 4
    printf("mul(-2) = %d\n", mul(-2));  // 4
    printf("mul() = %d\n", mul());  // 9
    
    printf("Press enter to continue ...");
    
    getchar();	
    
    return 0;
}

int mul(int x)
{
    return x * x;
}
  • 函数定义中是否可以出现参数的默认值? 可以
  • 当函数声明和定义中的参数默认值不同时会发生什么?会出错 error : 重定义默认参数,所以函数定义和声明中不能同时出现默认参数
  • 函数默认参数的规则
    • 只有参数列表后面部分的参数才可以提供默认参数值
    • 一旦在一个函数调用中开始使用默认参数值,那么这个参数后的所有参数都必须使用默认参数值
#include <stdio.h>

int add(int a, int b = 0, int c = 0, int d = 0)    // 只有参数列表后面部分的参数才可以提供默认参数值,
{                                                  
	return a + b + c ;
}

int main(int argc, char *argv[])
{
    printf("add(2) = %d\n", add(2));   //  一旦在一个函数调用中开始使用默认参数值,那么这个参数后的所有参数都必须使用默认参数值
    printf("add(1, 2) = %d\n", add(1, 2));   
    printf("add(1, 2, 3) = %d\n", add(1, 2, 3));
    
    printf("Press enter to continue ...");

    getchar();	
    
    return 0;
}
  • 运行结果

2.函数占位参数

  • 在C++中可以为函数提供占位参数 
  • 占位参数只有参数类型声明,而没有参数名声明 
  • 一般情况下,在函数体内部无法使用占位参数 
#include <stdio.h>

int func(int a, int b, int)  // 占位参数只有参数类型声明,而没有参数名声明,一般情况下,在函数体内部无法使用占位参数
{
	return a + b;
}

int main(int argc, char *argv[])
{
	printf("func(1, 2, 3) = %d\n", func(1, 2, 3));  // 3
    
    printf("Press enter to continue ...");
    
	getchar();	
    
	return 0;
}
  •  函数占位参数的意义
    • 占位参数与默认参数洁合起来使用 
    • 兼容C语言程序中可能出现的不规范写法 
#include <stdio.h>

int func(int a, int b, int = 0)   // 可以将占位参数与默认参数结合起来使用
{
    return a + b;
}

int main(int argc, char *argv[])
{
    printf("func(1, 2) = %d\n", func(1, 2));  // 3
    
    printf("Press enter to continue ...");
   
	getchar();	
    
	return 0;
}

3.小结

  • C++中支持函数参数的默认值; 
  • 如果函数调用时没有提供参数值,则使用默认值; 
  • 只有参数列表后面部分的参数才可以提供默认参数;
  • 函数调用时使用了默认值,则后续参数必须使用默认值;
  • C++中支持占位参数,用于兼容C语言中的不规范写法;

标签:默认值,int,C++,占位,函数参数,参数,默认,printf,解析
来源: https://blog.csdn.net/qq_22847457/article/details/96301044

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有