新手入门C++(1):函数参数学习以及注意点
2020-03-31 19:15
761 查看
C++函数学习以及注意点
①:默认值参数不能出现在非默认值参数的左方:
在定义函数默认值参数时,如果函数具有多个参数,应保证默认值参数出现在参数列表的右方,没有默认值参数出现在参数列表的左方.
//错误定义① int totaladd(int a=10,int b,int c);//默认参数a出现在非默认参数b,c的左方 //错误定义② int totaladd(int a,int b=10,int,c);//默认参数b出现在非默认参数c的左方 //正确定义: int totaladd(int a,int b,int c=10);
②可变参数的学习以及理解:
1>引例:以printf库函数为例,其函数原型
_CRTIMP int_cdec1 printf(const char *,…);
在参数列表中存在省略号,所以printf函数的参数是不固定的
引例:
printf("%d\n",2020);//输出了一项信息 print("%s-%s-%s","zhongguo","kangyi","bisheng");//输出了两项信息
2>如何定义一个可变参数的函数:
在定义可变参数的函数时,需要在参数列表中存在一个省略号
引例:
void whoami(char name,...);//定义了含有可变参数的函数
3>如何让函数接受可变参数:
#include<stdarg.h>//C语言头文件 /*stdarg.h是C语言中标准函数库文件,主要功能是让函数接收可变参数*/ #include<cstdarg>//C++头文件 /*同stdarg.h提供同样的功能,但是略有不同*/
4>如何使用可变参数:
#include<iostream> #include<cstdarg> using namespace std; void Showname(int num,...); int main() { Showname(3,"xiaolan",20,"xiaohong",19); } void Showname(int num,...) { va_list arg; //定义va_list 变量,是指向参数的指针 va_start(arg,num); //va_start用于获取可变参数列表第一个参数的地址 while(num--) { char *getstr=va_arg(arg,char *); //va_arg用于获取可变参数当前参数后返回将指针指向下一参数,并且描述了获取参数的类型 int getDate=va_arg(arg,int ); cout<<"the name is "<<getstr<<endl; cout<<"the age is "<<getDate<<endl; } va_end(arg);//va_end清空了可变参数va_list的列表 }
注意:如果num>传入可变参数的个数,那么系统在运行的显示中就会出现错误
例如:传入值为num=3时,在保证其他可变参数输入情况不变的情况下,程序的运行结果就会出现错误.
总结:
在声明函数的过程中,默认参数和非默认参数的位置需要注意的事项.
定义和使用带有可变参数的函数的基础方法.
不断学习,不断更新.
恳请大佬,多多指教.
参考链接:https://baike.baidu.com/item/stdarg/10282385
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Python新手入门应该注意的一些问题以及学习方向
- C++入门学习:内联函数、函数的默认参数和占位参数
- Python新手入门应该注意的一些问题以及学习方向
- C++学习笔记:函数指针语法基础以及函数指针做函数参数的思想剖析
- 我的c++学习(12)指针作为函数参数
- C++入门教程 之 初学者,你应当如何学习C++以及编程
- 新手入门学习:浅析c/c++中的指针
- C++指针作为函数的参数进行传递时需要注意的一些问题
- javascript入门系列演示·函数的定义以及简单参数使用,调用函数
- C++函数参数传递的3种方式以及优缺点
- C++指针作为函数的参数进行传递时注意的问题
- 每天学习一点C++之三——函数的默认参数
- 新手学习C++笔记5:函数的调用
- Python新手学习基础之函数-关键字参数
- C++学习笔记--函数参数扩展和占位参数
- 新手入门前端技术学习路线以及技术汇总
- Python新手学习基础之函数-可变参数**
- C++一些注意点之函数参数为指针
- [C++学习历程]基础部分 C++中的函数中的值参数、地址参数、引用参数实际例子
- C++函数的参数传递机制以及参数的类型选择