| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2163 人关注过本帖
标题:重磅炸弹-c语言变参函数
取消只看楼主 加入收藏
lingluoz
Rank: 2
来 自:苏州科技学院
等 级:新手上路
威 望:4
帖 子:749
专家分:0
注 册:2008-2-2
结帖率:100%
收藏
 问题点数:0 回复次数:3 
重磅炸弹-c语言变参函数
c语言变参函数
lingluoz
08-06-14

什么是变参函数
变参函数就是像printf()一样,参数数量可变的一种函数,c语言里面可以通过头文件stdarg.h来支持这种函数
这一类函数的原形是,
类型 函数名(类型 第一个参数,...)
拿printf做例子
int printf (const char * format,...)

*特别注意的一点就是c语言里面变参函数必须有一个或以上的已知参数,在函数变参数的前面,比如
int f(...)
int f(...,int i)
是错误的
int f(int i,...)
是正确的

好了,不给大家卖关子了,直接挂代码
*这个我懒得转成高亮的了,大家将就一下吧:P

1.c

/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http:// **
*****************************************************************/
#include <stdio.h>
#include <stdarg.h>  /*最主要的就是这个头文件了*/
#include <stdlib.h>  /*这个和变参函数一点关系也没有,这个是我为了防止
                    屏幕一闪而过调用system("pause")用的*/


#define _max_args 31  /*定义参数的最大值*/

int sum(int n_param,...)
{
   
va_list ap;  /*定义一个参数列表*/
   
int i;
    int s=0;
    if (n_param>_max_args)
        n_param=_max_args;
    va_start(ap,n_param);  /*开始读取变量,n_param表示从变量n_param后面开始读取*/
   
for (i=0;i<n_param;i++)
        s=s+va_arg(ap,int); /*va_arg表示从...里面读取一个int类型变量,然后把ap指向
                            下一个变量*/
   
va_end(ap); /*不要忘记这个哦*/
   
return s;
}

int main()
{
   
printf("%d",sum(5,1,2,3,4,5));
    system("pause");
    return 0;
}


*试试看 是不是15啊
sum(n_param,...)就是把 它后面的从第二个参数开始的n_param个int型变量相加
你可以改成sum(3,1,2,3)试试:)

[[it] 本帖最后由 lingluoz 于 2008-6-14 15:00 编辑 [/it]]
搜索更多相关主题的帖子: 函数 c语言 重磅 int 炸弹 
2008-06-14 14:34
lingluoz
Rank: 2
来 自:苏州科技学院
等 级:新手上路
威 望:4
帖 子:749
专家分:0
注 册:2008-2-2
收藏
得分:0 
你这个程序哪里可以下载啊

Murphy's Law :
If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it.
2008-06-14 14:43
lingluoz
Rank: 2
来 自:苏州科技学院
等 级:新手上路
威 望:4
帖 子:749
专家分:0
注 册:2008-2-2
收藏
得分:0 
果然是版主。这种方法不错。。

Murphy's Law :
If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it.
2008-06-14 22:21
lingluoz
Rank: 2
来 自:苏州科技学院
等 级:新手上路
威 望:4
帖 子:749
专家分:0
注 册:2008-2-2
收藏
得分:0 
这个普通的书上是没有的。。因为很偏。我是死坑C99的英文文档才搞出来的。。然后创建参数表是一本解释linux代码的书上这样注释类似语句的
实际上关于c语言。大家不知道的还很多

Murphy's Law :
If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it.
2008-06-14 22:49
快速回复:重磅炸弹-c语言变参函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025539 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved