变长参数

来源:互联网 发布:鹿铃动画片 知乎 编辑:程序博客网 时间:2024/05/01 09:47

源自:http://www.cnblogs.com/zzj2/archive/2013/04/16/3024670.html



先举例


一、什么是可变参数 
     我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: 
int printf( const char* format, ...); 
它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三个点“”做参数占位符),实际调用时可以有以下的形式:          printf("%d",i); 
printf("%s",s); 
printf("the number is %d ,string is:%s", i, s);     


#include <stdio.h>


int sum(int n, ...)
{
    int i;
    int sum = 0;
    int *p;
    p=&n+1;
    for(i=0;i<n;i++)
    {
        sum += *(p+i);
    }


    return sum;
}


int main(void)
{
    int result = sum(4,1,2,5,9);
    printf("%d\n", result);
    return 0;
}


先传入一个个数  然后再计算。这些参数都是相邻的  一定吗??