栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

二十一.函数的参数几种使用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二十一.函数的参数几种使用

函数的参数几种使用 指针参数 普通参数 引用参数 缺省参数 可变参数区别 普通参数

1.也就是我们平常见到的一些最简单的

int ADD(int a,int b)
{
    return a+b;
}
//int a,int b 这种类型 + 变量 
指针参数

1.参数类型包含了指针

int ADD(int *a,int *b)
{
    return *a+*b;
}
引用参数

1.参数类型包含了引用

int ADD(int &a,int &b)
{
    return a+b;
}
缺省参数

1.缺省的意思是"我们可以设置一个默认的参数",这种写法在WIN32 API中很多

//申明
int CalcFunCtion(int a,int b,char flagC='+')
//定义
int CalcFunCtion(int a,int b,char flagC)
{
    if(flagC=='+')
    {
        return a+b;
    }
    else if(flagC=='-')
    {
        return a-b;
    }
    //...
}
可变参数

1.参数列表有省略号(…),这个省略号代表可选参数。
2.当编写支持参数数量可变的函数时,必须用 va_list 类型定义参数指针,以获取可选参数。
3.可以用 4 个宏来处理该参数指针,这些宏都定义在头文件 stdarg.h 中

宏va_start函数的参数列表
void va_start(va_list argptr, lastparam);

1.宏 va_start 使用第一个可选参数的位置来初始化 argptr 参数指针。该宏的第二个参数必须是该函数最后一个有名称参数的名称。
2.必须先调用该宏,才可以开始使用可选参数。

宏va_arg函数
type va_arg(va_list argptr, type);

1.展开宏 va_arg 会得到当前 argptr 所引用的可选参数,也会将 argptr 移动到列表中的下一个参数。
2.宏 va_arg 的第二个参数是刚刚被读入的参数的类型。

宏va_end函数
void va_end(va_list argptr);

1.当不再需要使用参数指针时,必须调用宏 va_end。
2.如果想使用宏 va_start 或者宏 va_copy 来重新初始化一个之前用过的参数指针,也必须先调用宏 va_end。
展开宏 va_arg 会得到当前 argptr 所引用的可选参数,也会将 argptr 移动到列表中的下一个参数。

宏va_copy函数
    void va_copy(va_list dest, va_list src);

1.宏 va_copy 使用当前的 src 值来初始化参数指针 dest。然后就可以使用 dest 中的备份获取可选参数列表,从 src 所引用的位置开始。

综合案例
// 函数ADD() 计算可选参数之和
// 参数:第一个参数指定了可选参数的数量,可选参数为int类型
// 返回值:和值,int类型
int ADD( int n, ... )
{
    int iSum = 0;
    va_list argptr;
    va_start( argptr, n );              // 初始化argptr
    for (int i = 0; i < n; i++ )          // 对每个可选参数,读取类型为int的参数,
    iSum += va_arg( argptr, int);  // 然后累加到sum中 这里要注意类型!为int类型名
    va_end( argptr );
    return sum;
}

迪大交流群:285530835

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/722985.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号