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

c++相关函数学习

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

c++相关函数学习

1.snprintf()
函数原型为int snprintf(char *str, size_t size, const char *format, …)。
将可变参数 “…” 按照format的格式格式化为字符串,然后再将其拷贝至str中。
(1) 如果格式化后的字符串长度 < size,则将此字符串全部复制到str中,并给其后添加一个字符串结束符(’’);
(2) 如果格式化后的字符串长度 >= size,则只将其中的(size-1)个字符复制到str中,并给其后添加一个字符串结束符(’’),返回值为欲写入的字符串长度。

2.va_list 是在 C 语言中引入解决变参问题的一组宏,变参问题是指参数的个数不定或者每个参数的类型不同。
头文件:
#include

3.type va_arg (va_list ap, type)

该宏用于变参数函数调用过程中,type是当前参数类型,调用该宏后,ap指向变参数列表中的下一个参数,返回ap指向的参数值,是一个类型为type的表达式

void PrintInt(int cnt, ...)  { 
    va_list ap;
    int value;

    va_start(ap, cnt);

    for (int i = 0; i < cnt; i++) {
        value = va_arg(ap, int);
        printf("%dn", value); 
    }

    va_end(ap);
}
int main(void) {
    PrintInt(4, 1, 2, 3, 4);
}

输出结果:
1
2
3
4
这里说明一下输出打印结果的原因,涉及函数参数的传递原理。

va_list 的实现原理过程中函数参数是以栈的形式存取,从右至左入栈。

参数的内存存放格式:参数存放在内存的堆栈段中,在执行函数的时候,从最后一个开始入栈。因此栈底高地址,栈顶低地址。

使用 va_arg 函数取出的时候从栈顶开始取,所以上面的例子中取出的第一个参数是 1.

4.va_start();
C 库宏 void va_start(va_list ap, last_arg) 初始化 ap 变量,它与 va_arg 和 va_end 宏是一起使用的。
last_arg 是最后一个传递给函数的已知的固定参数,即省略号之前的参数。
ap – 这是一个 va_list 类型的对象,它用来存储通过 va_arg 获取额外参数时所必需的信息。

5.vsnprintf();
linux环境下是:vsnprintf
头文件:
#include
函数声明:
int _vsnprintf(char* str, size_t size, const char* format, va_list ap);
_vsnprintf是C语言库函数之一,属于可变参数。用于向字符串中打印数据、数据格式用户自定义。

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

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

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