C语言可变参数用法,C语言可变参数

  C语言可变参数用法,C语言可变参数

  c语言变量参数,参数传递-尤里卡_-博客公园

  c语言变量参数,参数传递1。功能参数的存储。函数参数存储在函数的堆栈中。

  示例:

  #包含stdio.h

  void fun(int a0,int a1,int a2,int a3)

  int * temp

  temp=a0

  int I;

  for(I=0;I 4;i ){

  printf(%d\t ,* temp);

  int main(){

  fun(1,2,3,4);

  getchar();

  返回0;

  }函数输出为:

  1 2 3 4

  2.通用函数的定义存储在内存中。

  在通用变量定义之后,相同的变量类型被存储在相邻的内存块中。

  示例:

  #包含stdio.h

  int main()

  int A0=1;

  char c0= a

  double d0=1.1

  char c1= b

  双d1=2.2

  int a1=2;

  int a2=3;

  int * pint=a0

  char * pch=c0

  double * pd=d0

  printf(%p:%d\n ,品脱,*品脱);

  品脱;

  printf(%p:%d\n ,品脱,*品脱);

  品脱;

  printf(%p:%d\t%p\n ,pint,* pint);

  printf(%p:%c\n ,pch,* PCH);

  pch

  printf(%p:%c\n ,pch,* PCH);

  printf(%p:%.2f\n ,pd,* PD);

  PD;

  printf(%p:%.2f\n ,pd,* PD);

  }输出:

  0xbf944c54:1

  0xbf944c58:2

  0xbf944c5c:3

  0xbf944c6e:a

  0xbf944c6f:b

  0xbf944c40:1.10

  0xbf944c48:2.20

  * *这个结论只是我自己编译的结果,可能和另一个编译器的输出不一样。而且,如果有任何变量没有被使用,编译器可能会将其丢弃(这只是我的猜测,我前阵子研究《深入理解计算机系统》的时候也在研究这个问题)。

  3.C语言给出的可变形引用va_list头文件stdarg.h

  定义了以下四个宏:

  1.va_list在stdarg.h: typedef char * va_list中定义;

  2.void va_start(va_list ap,last);这是第一个被调用的宏,last是变量参数的前一个确定参数。所以只允许有可变参数的函数,比如fun(.)是违法的。

  # define va _ start (ap,v)(AP=(va _ list)v _ int sizeof(v))//第一个可选参数的地址

  3.void va_arg(va_list ap,type);返回当前参数并将ap指向下一个参数。type是一个显式类型名,它是获取的类型,而不是。

  # defineva _ arg (ap,t)(*(t *)((AP=_ int sizeof(t))-_ int sizeof(t)))//下一个参数地址

  4.void va _ end(va _ list AP);有va_start就必须有va_end,用来释放ap。

  # define va _ end(AP)(AP=(va _ list)0)//将指针设置为无效

  4.void va_copy(va_list dest,va _ list src);每次调用va_copy都要有一个va_end调用。

  示例:

  #包含stdio.h

  #包含stdarg.h

  虚空乐趣(int a,){

  va _ list ap

  va_start(ap,a);

  int I;

  for(I=0;i i ){

  printf(%d\t ,va_arg(ap,int));

  putchar( \ n );

  va _ end(AP);

  int main(){

  fun(4,1,2,3,4);

  printf(-\ n );

  fun(4,1,2, ab , CD );

  返回0;

  }输出:

  1 2 3 4

  -

  1 2 134514184 134514181

郑重声明:本文由网友发布,不代表盛行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算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: