在学习C语言的过程中,大家是不是和我一样,认为printf是一个神一样的函数?他可以接受不同数目,不同类型的参数,他到底是怎么实现的呢?
让我们去看一下它的源代码:
printf源代码:
int printf(const char *fmt,...)
{
int res;
va_list arg;
va_start(arg,fmt);
res = vprintf(fmt...
分类:
其他好文 时间:
2015-05-19 22:46:02
阅读次数:
143
一:起因
(0)不定长参数,也叫可变的参数,就是再调用函数之前,并不确定到底需要传递多少个参数
(1)Java中的不定长参数用String... args / int... args等三个点来表示;Python中用*args元组来表示 / **args字典(map)来表示
(2)不定参数有两个规定:第一,方法的参数列表中最多只有一个不定长度的参数;第二,就是不定长度的数组的位置必须是最后一...
分类:
编程语言 时间:
2015-05-19 19:11:41
阅读次数:
156
java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一...
分类:
编程语言 时间:
2015-05-17 12:08:27
阅读次数:
135
stdarg宏:
可变参数列表是通过宏来实现的,这些宏定义于stdarg.h头文件中,它是标准库的一部分。这个头文件声明一个类型va_list
和三个宏va_start、va_arg和va_end。我们可以声明一个类型为va_list的变量,与这几个宏配合使用,访问参数。
声明一个va_list
类型的变量arg,它用于访问参数列表的未确定部分。这个变量是调用va_start来初始化...
分类:
编程语言 时间:
2015-05-15 09:10:19
阅读次数:
117
求多个数中的最大值要求用可变参数列表:
代码如下:
#include
#include
int Max(int n,...)
{
int i=0;
int max=0;
va_list arg;
va_start(arg,n);
for(i=0;imax)
{
...
分类:
编程语言 时间:
2015-05-14 23:50:14
阅读次数:
192
va_list arg 访问参数列表未确定部分
va_start(arg,val);//将 arg_ptr 设置为传递给该函数参数列表的第一个可选参数 arg是声明的变量名,val是已确定参数列表最后一个参数
va_arg(arg,int);//从 arg_ptr给出的位置检索 type 的值,并将 arg_ptr 指向列表中的下一个参数,使用 type 的范围确定下一个参数开始的...
分类:
其他好文 时间:
2015-05-13 19:53:49
阅读次数:
125
在sql server中建存储过程,如果需要参数是一个可变集合的处理原存储过程,@objectIds 为可变参数,比如 110,98,99ALTER PROC [dbo].[Proc_totalScore]@categoryKey int,@objectIds VARCHAR(MAX)ASBEGIN...
分类:
数据库 时间:
2015-05-13 19:17:10
阅读次数:
178
out参数与c++的引用的对比out参数可以用来传递方法返回值,与c++中的引用有点像,但是还有有些不同:
- 调用方法的时候必须写out参数
- 调用方法之前必须先分配空间
- 调用方法之前不用先赋值.
- 必须在方法内部对out参数赋值;下面自己实现一个tryparse函数using System;
using System.Collection...
如题
我们在写可变参数列表函数之前,先来了解一下什么是可变参数列表函数。
我们在c语言编程中有时会遇到 一些参数个数可变的函数,例如printf()函数,其函数原型为:
int printf(const char* format,…);
它除了有一个参数format固定以外,后面跟的参数个数和类型是可变的(用三个点“...”做参数占位符),实际调用时可以有以下的形式:
printf(“%...
分类:
其他好文 时间:
2015-05-12 13:41:27
阅读次数:
160
//头文件
va_list arg 访问参数列表未确定部分
va_start(arg,val);//将 arg_ptr 设置为传递给该函数参数列表的第一个可选参数
arg是声明的变量名,val是已确定参数列表最后一个参数
va_arg(arg,int);//从 arg_ptr给出的位置检索 type 的值,并将 arg_ptr 指向列表中的下一个参数,使用 type 的范围确定下一个...
分类:
其他好文 时间:
2015-05-12 13:38:58
阅读次数:
120