c语言函数参数可以省略吗,c语言中的省略号

  c语言函数参数可以省略吗,c语言中的省略号

  C函数参数中的省略号-waterday的博客-51CTO技术博客

  c函数参数中的椭圆

  2010-06-09 20:48:32

  标签:C函数省略号参数休闲

  原创作品允许转载。转载时请以超链接的形式注明原出处、作者信息及本声明。否则将追究法律责任。http://waterday.blog.51cto.com/1032892/329079

  c允许你定义参数数量和类型不确定的函数。例如,C语言中的标准函数printf就使用了这种机制。当声明带有不确定参数的函数时,参数部分可以用省略号“…”代替。“…”告诉编译器在调用函数时不要检查参数类型是否与实参类型或参数个数相同。

  例如:

  void ConnectData(int i,)

  在上面的代码中,编译器只检查第一个参数是否为整数,不检查其他参数。

  对于参数可变的函数,需要特殊处理。首先需要参考stdarg.h头文件,然后使用va_list类型和va_start、va_arg、va _ end三个宏读取传入函数的参数值。

  这些宏定义如下(在ANSI C中):

  type va_arg( va_list arg_ptr,type);

  void va _ end(va _ list arg _ ptr);

  void va_start( va_list arg_ptr,prev _ param);

  描述如下:

  va_start

  将arg_ptr设置为传递给函数的参数列表中的第一个可选参数。参数arg_ptr必须具有va_list类型。参数prev_param是必需参数的名称,紧接在参数列表中第一个可选参数之前。如果prev_param是用寄存器存储类声明的,则宏的行为是未定义的。第一次使用va_arg之前,必须使用va_start。

  va _ start函数将参数arg_ptr设置为变量参数列表中的第一个参数。参数arg_ptr的类型必须是va_list。参数prev_param是变量参数列表之前的参数。(也就是说,在ANSI C中,如果一个函数有一个可变参数,那么在可变参数之前必须有一个明确定义的参数,否则无法调用函数va_start。比如函数int add(int i,)是合法的,而函数int add(.)是违法的。)】

  虚拟参数

  从arg_ptr给定的位置检索类型的值,并递增arg_ptr以指向列表中的下一个参数,使用类型的大小来确定下一个参数的开始位置。va_arg可以在函数中使用任意次,以从列表中检索参数。

  va _ arg函数将返回arg_ptr指示的位置值,并将arg_ptr指向下一个参数]

  va_end

  检索完所有参数后,va_end将指针重置为空。

  示例代码:

  #包括cstdarg

  #包括iostream

  使用命名空间std

  Add (int pre,)//求和函数

  {

  va _ list arg _ ptr

  int sum=0;

  int nArgValue

  sum=pre

  va_start(arg_ptr,pre);

  做

  {

  nArgValue=va_arg(arg_ptr,int);

  sum=nArgValue

  }while(nArgValue!=0);//自定义结束条件是输入参数为0。

  va _ end(arg _ ptr);

  返回总和;

  }

  int main()

  {

  cout add(1,2,3,0)endl;//必须以0结尾,因为参数列表结束的判断条件是停止读取0。

  返回0;

  }

  参考:MSDN

  http://winganson . blog . 163 . com/blog/static/12628477201021443515742/

  3358 hi . Baidu . com/kiro power/blog/item/633d 34d 36 b 3 FD 3a 9 c 9 a 9 c . html本文来自水日的博客,请将此来源保留在http://waterday.blog.51cto.com/1032892/329079.

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: