`
buluzhai
  • 浏览: 110534 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

c语言函数的可变参数

阅读更多
在C语言中,有一个方法可以使用可变参数,可变参数是指,函数的有一些参数不是必要的。一些编程语言中,这些参数通常有一些默认值。
比如C++中的可变参数

int myFunc(int a, int b, int ab=0){
	if (ab==0){
		return a+b;
	}else{
		return a+b+ab;	
	}
}

在myFunc函数头中ab参数有一个默认值0,也就是说这个函数可以使用两个或三个参数,a,b是必要的,ab不是必要的。如果ab是空的,则默认是0.
比如

myFunc(1,2)返回3.
myFunc(1,2,3)返回6.

标准c函数的可变参数

标准c函数里面没有像上文提到的可变参数,但是如果你使用像printf这样的函数,你可以用1个,2个甚至更多的参数。比如

printf("printf with no specifier format\n");
printf("printf with %s specifier format \n","one");
printf("printf with %s specifier format %s","two","arguments");

那printf是怎么做到的呢?

在c中使用参数列表,你必须首先包含一个stdarg.h的头文件,函数的参数列表至少有一个写出名字的参数,剩下的参数可以用“...”表示。比如

#include <stdarg.h>


void myFunc2(int a, int b, ...){

	int ab;
	va_list ap;
	va_start(ap,b);
	ab=va_arg(ap,int);
	ab=ab>a ? 0 : ab;
	va_end(ap);
	if (ab==0){
		return a+b;
	}else{
		return a+b+ab;	
	}
}


在函数中,我们需要一个va_list的变量来保存参数列表的元素,va_start函数用来把va_list指向参数列表,在这之前,我们需要让va_start知道什么最后一个标明的参数,也就是写出名字的参数。在上面的例子中,就是b.

va_arg函数可以一个一个的得到参数元素并把它放在另外一个变量中,如果调用va_arg函数他会把指针移动到参数表中的下一个参数,当所有的参数都保存到其他变量中之后,我们必须调用va_end函数。

上面的例子myFunc2函数跟上文的C++函数是一样的。

via:http://www.nanaz.net/pages/blog.php?idblog=25
分享到:
评论

相关推荐

    C语言可变参数函数详解示例

    在C语言中,可变参数函数是一种特殊类型的函数,它允许在函数定义时不确定参数的数量。这使得函数能够处理不同数量的参数,提供更大的灵活性。典型的应用包括`printf`和`scanf`,它们都能接收任意数量的参数。下面...

    C语言中的可变参数

    在C语言中,可变参数是一种非常有用的功能,它允许函数接受不同数量的参数。这种特性使得函数在设计时能够处理未预知数量的输入,增强了代码的灵活性和通用性。下面将详细介绍C语言中可变参数的实现原理、使用方法...

    C语言中可变参数的用法

    本文将详细介绍如何在C语言中编写可变参数函数,并探讨其内部实现机制。 #### 可变参数函数的基本概念 可变参数函数是指函数参数列表中最后一个参数可以是任意数量和类型的参数。在C语言中,通过宏`va_start`、`va...

    C语言可变参数

    在C语言中,可变参数是一种非常有用的特性,它允许函数接受不同数量的参数。这种特性使得编写如`printf`函数那样灵活的函数成为可能,这些函数可以根据传入的参数动态地处理数据。本文将深入探讨C语言中的可变参数...

    C语言中可变参数的用法.doc

    在C语言中,可变参数的使用是一种灵活的特性,允许函数接受不同数量或类型的参数。这在处理如`printf`等需要动态参数列表的函数时非常有用。`printf`函数的定义允许用户根据需要传递任意数量的格式化参数。 在C语言...

    C语言可变参数及printf函数的实现

    ### C语言可变参数及printf函数的实现 在C语言编程中,虽然可变参数(variadic functions)在自定义接口中较少应用,但作为核心功能之一,它在标准库函数如`printf`中扮演着关键角色。本文将深入探讨C语言中可变...

    C语言可变参数的使用

    在C语言中,可变参数是一种非常有用的特性,它允许函数接受不同数量的参数。这种功能在编写一些需要灵活处理参数的函数时非常方便,比如常见的`printf`函数。本篇将详细介绍C语言中可变参数的使用及其背后的机制。 ...

    C语言参数个数可变函数详解

    C语言中的可变参数函数,也称为VA函数,允许开发者创建能够接受任意数量参数的函数。这些函数在处理像`printf()`和`scanf()`这样的格式化输入/输出时非常有用,以及在`exec*()`系列函数中用于在程序中执行外部文件。...

    C语言中可变参数函数实现原理

    在C语言中,可变参数函数是一种允许函数接受不同数量参数的机制,常见的例子有`printf()`和`scanf()`。这种功能的实现依赖于函数调用时参数压栈的规则和标准库提供的宏定义,主要涉及到`stdarg.h`头文件中的相关定义...

    C语言可变参数列表:深入解析与应用实践

    可变参数列表为C语言函数提供了接受不定数量参数的能力,使得编写通用和灵活的函数成为可能。本文详细介绍了可变参数列表的基本概念、实现机制、使用步骤、应用场景和编程实践。同时,讨论了使用可变参数列表时的...

    C语言中可变参数实现分析

    在C语言中,函数可以接受不确定数量的参数,这一特性通过可变参数函数实现。这种灵活性使得程序能够处理更广泛的输入情况,尤其是在需要处理用户输入或日志记录等场景下尤为重要。本文将深入探讨C语言中可变参数的...

    C语言可变参数函数教程大家下载吧

    在C语言中,可变参数函数是一种特殊类型的函数,它允许程序员在定义函数时不确定或不固定参数的数量。这种灵活性使得在某些情况下非常有用,比如处理格式化字符串输出(如printf函数)或日志记录等场景。下面我们将...

    C语言可变参数技术内幕.pdf

    C语言可变参数技术内幕是指C语言中的一种技术,可以在函数中传递可变数量的参数。这种技术可以使函数更加灵活和高效。本文将详细介绍C语言中可变参数技术的原理、应用和实现机制。 一、C语言可变参数技术的原理 ...

    C语言可变参数函数范例-程序源码

    示范如何在C语言实现可变参数函数 比如:printf(char *format,...) 有两个示范例程: //把多个字符串连接起来 char *StrCat(char *src,...) //把多个参数加总 int SumAll(int number1,...) 注意事项请看My相关...

    用C语言实现参数个数可变的函数

    1. 可变参数列表的实现原理:通过C语言预定义的宏va_start、va_arg、va_end在stdarg.h头文件中,可以使得函数访问参数个数不定的参数列表。 2. va_start宏的作用:va_start宏初始化参数列表,为后续使用va_arg宏...

    C语言函数参数的求值顺序及可变参数函数的设计方法.pdf

    总结来说,C语言函数参数的求值顺序和可变参数函数的设计是编程中需要理解的重要概念,它们对于编写高效和灵活的代码至关重要。而在VB中,通过事件驱动和内置控件,可以方便地创建用户界面并实现特定功能,如倒计时...

    可变参数的C语言函数的设计方法.pdf

    在C语言中,处理可变参数函数的基本机制涉及以下步骤和知识点: 1. **问题的提出**:在实际应用中,我们经常会遇到需要设计参数数目可变的函数情况,例如求若干个非零整数的平均值,而参数的结束标志是0。在教科书...

    水滴石穿C语言之可变参数问题.doc

    在C语言中,可变参数列表是一个非常独特的特性,它允许函数接受数量不确定的参数。这一特性主要通过标准库中的 `&lt;stdarg.h&gt;` 头文件来实现。`&lt;stdarg.h&gt;` 提供了一些宏和数据类型,使得程序员能够在不知道确切参数...

    C语言函数库详解.docx

    stdarg.h头文件提供了一组宏,用于实现可变参数表。可变参数表是指函数的参数个数不定的情况。这些宏包括va_list、va_start、va_arg和va_end等。 stddef.h:公共定义 stddef.h头文件提供了一组公共定义,用于定义...

Global site tag (gtag.js) - Google Analytics