网站开发英文怎么说,别人的做网站,如何开展网站推广,服务器和网站的关系目录
一.前言二.va_start 简介三.va_start 使用四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 C 语言基础入门 一.前言
对 printf 函数的使用#xff0c;我们并不陌生#xff0c;首先我们来看看下面关于 printf 函数的几种调用方式#xff1a;
printf( 学习路线推荐 : C/C 学习目录 C 语言基础入门 一.前言
对 printf 函数的使用我们并不陌生首先我们来看看下面关于 printf 函数的几种调用方式
printf(hello world);
printf(%s,hello world);
printf(%s %s,hello world,C语言教程-猿说编程);
printf(%d,3);
printf(%d %d,3,6);
printf(%d %d %d ,1,2,3);那么 printf 函数的原理到底是什么
由于在 C 语言中没有函数重载解决不定数目函数参数问题变得比较麻烦即使采用 C 如果参数个数不能确定也很难采用函数重载。对这种情况提出了指针参数来解决问题。
C 编译器通常提供了一系列处理这种情况的宏以屏蔽不同的硬件平台造成的差异增加程序的可移植性。这些宏包括 va_start 、va_arg 、va_end 等,一般三者需要配套使用。
#include stdarg.h#define va_start __crt_va_start
#define va_arg __crt_va_arg
#define va_end __crt_va_end二.va_start 简介
va_start 函数声明如下
#include stdarg.h//必须包含头文件/*
* arg_ptr 指向函数参数列表中的第一个可选参数
* argN 是位于第一个可选参数之前的固定参数, 或者说最后一个固定参数
*/
va_start(arg_ptr, argN)例如有如下函数声明
void va_test(char a, char b, char c, …)va_test 是一个不定长参数的函数则它的固定参数依次是 a , b , c , arg_ptr 指向第一个参数 a 最后一个固定参数 argN 为 c ;
三.va_start 使用
va_start 和 va_end 一般需要配套使用示例如下
/******************************************************************************************/
//Author:猿说编程
//Blog(个人博客地址): www.codersrc.com
//File:C语言教程 - C语言 va_start 宏
//Time:2021/07/10 08:00
//Motto:不积跬步无以至千里不积小流无以成江海程序人生的精彩需要坚持不懈地积累
/******************************************************************************************/#include stdafx.h
#include stdio.h
#include stdarg.hvoid myPtintf(char *format, ...)
{va_list args;va_start(args, format);vprintf(format, args);va_end(args);
}int main()
{myPtintf(hello world\n);myPtintf(%s\n, hello world);myPtintf(%s %s\n, hello world, C语言教程-猿说编程);myPtintf(%d\n, 3);myPtintf(%d %d\n, 3, 6);myPtintf(%d %d %d \n, 1, 2, 3);printf();return(0);
}输出
hello world
hello world
hello world C语言教程-猿说编程
3
3 6
1 2 3
*/注意在自定义 printf 函数 myPtintf 中我们使用的是 vprintf 函数而非 printf 函数注意 vprintf 函数和 printf 函数区别
四.猜你喜欢
C 语言 数组下标越界和内存溢出区别C 语言 使用指针遍历数组C 语言 指针和数组区别C 语言 指针数组和数组指针区别C 语言 野指针C 语言 函数值传递和址传递C 语言 函数不定长参数C 语言 函数指针C 语言 指针函数C 语言 回调函数 callbackC 语言 #pragma onceC 语言 #include 与 #include “” 区别C 语言 const 修饰函数参数C 语言 const 和 define 区别C 语言 #运算符C 语言 ##运算符C 语言 __VA_ARGS__C 语言 ##__VA_ARGS__C 语言 函数不定长参数 ##__VA_ARGS__经典案例C 语言 va_start 宏
未经允许不得转载猿说编程 » C 语言 va_start 宏