设为首页 加入收藏

TOP

C语言函数可变参数处理简介
2017-09-19 14:34:55 】 浏览:4083
Tags:语言 函数 可变 参数 处理 简介

c语言编程中,有时会遇到函数可变参数的情况,c语言没有像C++那样具有函数重载的机制,不过c语言还是考虑到了这方面的问题,设计了几条语句来处理这种情况。

下面就以实例来说明这个语句的使用,部分说明就包含在程序中了吧。

1、求取一个可变数组的均值

// ConsoleApplication8.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include 
  
   
#include 
   
     #include 
    
     //这个头文件是必须的 float meanvalue(int, ...);//声明函数体 int main() { int result = 0; result = meanvalue(3, 1, 5, 6);//在此你也可以输入meanvalue(4, 1, 5, 6,4); printf("the array average is %d\n", result); system("pause"); return 0; } float meanvalue(int n, ...)//可变参数至少要有一个明确的参数哦,...为省略的参数 { va_list varList;//定义va_list变量varList,该变量是指向参数的指针 va_start(varList, n);//va_list变量varList中最后一个固定参数 float sum = 0.0; for (int i = 0; i < n; i++) { sum += va_arg(varList, int);//返回值即为当前可变参数值 } va_end(varList); // 结束可变参数的获取,va_start 和 va_end 不返回值 return sum / n; } 
    
   
  

2、打印函数的不同情况

	// ConsoleApplication8.cpp : 定义控制台应用程序的入口点。
	#include "stdafx.h"
	#include 
  
   
	#include 
   
     #include 
    
      #include 
     
       void myprintf(char *fmt, ...) { va_list ap; int d; double f; char c; char *s; char flag; va_start(ap, fmt); while (*fmt) { flag = *fmt++; if (flag != '%') { putchar(flag); continue; } flag = *fmt++;//记得后移一位 switch (flag) { case 's': s = va_arg(ap, char*); printf("%s", s); break; case 'd': /* int */ d = va_arg(ap, int); printf("%d", d); break; case 'f': /* double*/ d = va_arg(ap, double); printf("%d", d); break; case 'c': /* char*/ c = (char)va_arg(ap, int); printf("%c", c); break; default: putchar(flag); break; } } va_end(ap); } int main() { char str[10] = "linuxcode"; int i = 1024; double f = 3.1415926; char c = 'V'; myprintf("string is:%s\n,int is:%d\n,double is:%f\n,char is :%c\n", str, i, f, c); }
     
    
   
  
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇c语言实现一元二次方程求解 下一篇编译链接

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目