您的位置:首页 > 编程语言 > C语言/C++

新手入门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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
客行 发布了9 篇原创文章 · 获赞 0 · 访问量 225 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: