可变参数函数的实现

第一种方法

#include<stdio.h>

#include<stdlib.h>

int f_add(int p_length,...){

int *l_指针=& p_length;

l_指针++

int l_sum=0

for(size_t i=0;i< p_length: i++){

int l_sum= int l_sum+*l_指针

}

return l_sum;

}

void main(){

printf("%d\n",f_add(5,1,2,3,4,5));

system("pause")

}

第二种方法

#include<stdio.h>

#include<stdlib.h>

#include<stdarg.h>

int f_add(int p_length,...){

va_list l_p=0

va_start(l_p,p_length)

int l_sum=0;

for(size_t i=0;i< p_length: i++){

int l_sum= int l_sum+va_arg(l_p,int);

}

return l_sum;

}

void main(){

printf("%d\n",f_add(5,1,2,3,4,5));

system("pause")

}

时间: 2024-08-24 03:46:06

可变参数函数的实现的相关文章

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

一.可变参数函数实现原理 C函数调用的栈结构: 可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈. 本文地址:http://www.cnblogs.com/archimedes/p/variable-parameter.html,转载请注明源地址. 例如,对于函数: void fun(int a, int b, int c) { int d; ... } 其栈结构为 0x1ffc-->d 0x200

C语言学习020:可变参数函数

顾名思义,可变参数函数就是参数数量可变的函数,即函数的参数数量是不确定的,比如方法getnumbertotal()我们即可以传递一个参数,也可以传递5个.6个参数 1 #include <stdio.h> 2 #include <stdarg.h>//实现可变参数需要的头文件 3 4 int getnumbertotal(int args,...){//可变参数要放在普通参数(args)的后面:...表示有很多个参数 5 va_list l;//用来保存传给函数的其他参数 6 va

【C语言天天练(四)】可变参数函数

可变参数函数指可以接受可变数量参数的函数.比如printf函数就是一个可变参数函数. 要完成可变参数函数的编写,需要用到定义于stdarg.h头文件中的一个类型va_list和三个宏va_start.va_arg.va_end. 注意: 1.可变参数必须从头到尾按照顺序逐个访问.如果在访问几个可变参数后想半途中止,这是可以的.但是,如果想一开始就访问列表中的参数,那是不行的. 2.由于参数列表中的可变参数部分并没有原型,所以,所有作为可变参数传递给函数的值都将执行缺省参数类型提升. 3.参数列表

娓娓道来c指针 (8)开发可变参数函数

(8)开发可变参数函数 在c语言中,可变参数的函数极其常见,如常用的printf().可变参数函数的一般形式如下: 返回值类型 函数名(类型1 参数1,类型2 参数2,...类型n 参数n,...); 如上所示,这是一个典型的可变参数样式,它共有n个确定的参数,最后的...表示可变参数的含义.必须指出...必须位于最后,并且它至少要有一个确定的参数,原因后面陈述. 为了开发可变参数的函数,需用到头文件stdarg.h.下面共给出两个实例,在实例中详细解释用法.一是求可变个整数的和:二是模仿pri

【转】C/C++中可变参数函数的实现

转自:http://www.cnblogs.com/cylee025/archive/2011/05/23/2054792.html 在C语言的stdarg.h头文件中提供了三个函数va_start, va_end,va_arg和一个类型va_list.利用它们,我们可以很容易实现一个可变参数的函数.首先简单介绍一下这三个函数. 假设现在有一个名为f的函数,其函数定义为: void f(int a, int b, ...) 那么,在函数的内部,为了获得这些可变参数,就需要利用到va_start.

ios开发-Object-C可变参数函数

简介 一个可变参数函数是指一个函数拥有不定的参数,即为一个函数可接收多个参数.有时我们会遇到一些算术问题需要用到,比如是计算传入参数的总和,字符串的连接或是其它操作过程,我们在 OC 里也经常使用,最经典的就是 NSLog( C 为 printf ) ,它可以指定格式的输出,格式化输出的内容. 现在我们先来看看普通函数的定义方法. 普通函数 一般我们定义的函数都是指定有多少个参数,如果是有三个参数,我们可以这样写. - (void)exampleObj:(NSString *)obj obj2:

C++ 11 可变参数模板和 boost::any 实现可变参数函数

1 class SqlHelper 2 { 3 public: 4 template <typename... Params> 5 static bool preparedExecute(sql::PreparedStatement* pstmt, Params... parameters) 6 { 7 return doPreparedExecute(pstmt, 1, parameters...); 8 } 9 10 private: 11 template <typename...

可变参数函数详解

可变参数函数又称参数个数可变函数(本文也简称变参函数),即函数参数数目可变.原型声明格式为: type VarArgFunc(type FixedArg1, type FixedArg2, -); 其中,参数可分为两部分:数目确定的固定参数和数目可变的可选参数.函数至少需要一个固定参数,其声明与普通函数参数相同:可选参数由于数目不定(0个或以上),声明时用"-"表示("-"用作参数占位符).固定参数和可选参数共同构成可变参数函数的参数列表. 由于参数数目不定,使用可

C++ 定义和使用可变参数函数

1 #include<iostream> 2 using namespace std; 3 void PrintAll(int n,...){ 4 int *ptr; 5 ptr = &n; 6 while(*ptr){ 7 cout<<*ptr<<endl; 8 ptr++; 9 } 10 } 11 int main(){ 12 PrintAll(3,4,5,0); 13 } 14 输出: 15 3 16 4 17 5 1.可变参数函数的函数头书写形式:typ

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

先看代码 printf("hello,world!");其参数个数为1个. printf("a=%d,b=%s,c=%c",a,b,c);其参数个数为4个. 如何编写可变参数函数呢?我们首先来看看printf函数原型是如何定义的.在linux下,输入man 3 printf,可以看到prinf函数原型如下: SYNOPSIS #include <stdio.h> int printf(const char *format, ...); 后面的三个点...