c-如何printf函数可以在输出变量参数时采用数字形式



我真的很想知道printf是如何执行的。C中是否存在参数数组结构?我可以像printf一样定义我的自定义函数吗?

特殊类型va_list用于使用变量列表参数。读这个。

您可以使用va_arg宏。这里有一个的例子

#include <stdio.h>      /* printf */
#include <stdarg.h>     /* va_list, va_start, va_arg, va_end */
int FindMax (int n, ...)
{
  int i,val,largest;
  va_list vl;
  va_start(vl,n);
  largest=va_arg(vl,int);
  for (i=1;i<n;i++)
  {
    val=va_arg(vl,int);
    largest=(largest>val)?largest:val;
  }
  va_end(vl);
  return largest;
}
int main ()
{
  int m;
  m= FindMax (7,702,422,631,834,892,104,772);
  printf ("The largest value is: %dn",m);
  return 0;
}

程序符合某些特定的ABI,调用约定由ABI定义。

调用约定定义了参数如何传递给函数,通常存储在寄存器或/和堆栈中。然后,函数相应地检索参数,这也适用于变差函数。

当然你可以自己定义变差函数。

相关内容

  • 没有找到相关文章

最新更新