大佬教程收集整理的这篇文章主要介绍了C语言 函数不定长参数 - C语言零基础入门教程,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
目录
@H_450_26@零基础 Python 学习路线推荐 : 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);
灵魂拷问:
关于 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
#include <stdarg.h>//必须包含头文件
/*
* arg_ptr 指向函数参数列表中的第一个可选参数
* argN 是位于第一个可选参数之前的固定参数, 或者说最后一个固定参数
*/
va_start(arg_ptr, argN)
#include <stdarg.h>//必须包含头文件
/*
* 返回参数列表中指针arg_ptr所指的参数, 返回类型为type.
* 并使指针arg_ptr指向参数列表中下一个参数.
* 返回的是可选参数, 不包括固定参数.
*/
va_arg(arg_ptr, typE)
#include <stdarg.h>//必须包含头文件
/*
* 清空参数列表, 并置参数指针arg_ptr无效.
*/
va_end(arg_ptr)
/************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言 函数不定长参数
//@Time:2021/06/23 08:00
//@motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/************************************************************************/
#include <stdio.h>
#include <stdarg.h>
void WriteFrmtd(char *format, ...)
{
va_list args;
va_start(args, format);
vprintf(format, args);
va_end(args);
}
int main ()
{
WriteFrmtd("%d variable argument\n", 1);
WriteFrmtd("%d variable %s\n", 2, "arguments");
return(0);
}
输出:
1 variable argument
2 variable arguments
/************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言 函数不定长参数
//@Time:2021/06/23 08:00
//@motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/************************************************************************/
#include "stdafx.h"
#include <stdio.h>
#include <stdarg.h>
//c参数类型,参数个数不确定。
//自定义方法
int Sum(int num, ...)
{
int S = 0, T;
va_list ap;
va_start(ap, Num);
for (int i = 0; i<Num; ++i)
{
T = va_arg(ap, int); S += T;
}
return S;
}
void myPrintf(int num, ...)
{
va_list ap;
va_start(ap, Num);
for (int i = 0; i<Num; i++)
{
//va_arg 返回值是不固定参数,所以第一个值是"dsdsdss"并非2
char *T = va_arg(ap, char*);
printf("myPrintf:%s\n", T);
}
}
int main()
{
int n;
myPrintf(2, "dsdsdss", "sdaddd");
printf("%d\n", Sum(10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
return 0;
}
输出:
myPrintf:dsdsdss
myPrintf:sdaddd
55
*/
未经允许不得转载:猿说编程 » C 语言 函数不定长参数
@H_450_26@本文由博客 - 猿说编程 猿说编程 发布!
以上是大佬教程为你收集整理的C语言 函数不定长参数 - C语言零基础入门教程全部内容,希望文章能够帮你解决C语言 函数不定长参数 - C语言零基础入门教程所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。