blob: bbb3b46018e0ae276ae8cc1c0f87cefb46064f0d [file] [log] [blame]
<html lang="en">
<head>
<title>Variadic Example - The GNU C Library</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="The GNU C Library">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Variadic-Functions.html#Variadic-Functions" title="Variadic Functions">
<link rel="prev" href="How-Variadic.html#How-Variadic" title="How Variadic">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This file documents the GNU C library.
This is Edition 0.12, last updated 2007-10-27,
of `The GNU C Library Reference Manual', for version
2.8 (Sourcery G++ Lite 2011.03-41).
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
2003, 2007, 2008, 2010 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``Free Software Needs Free Documentation''
and ``GNU Lesser General Public License'', the Front-Cover texts being
``A GNU Manual'', and with the Back-Cover Texts as in (a) below. A
copy of the license is included in the section entitled "GNU Free
Documentation License".
(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual. Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
<link rel="stylesheet" type="text/css" href="../cs.css">
</head>
<body>
<div class="node">
<a name="Variadic-Example"></a>
<p>
Previous:&nbsp;<a rel="previous" accesskey="p" href="How-Variadic.html#How-Variadic">How Variadic</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Variadic-Functions.html#Variadic-Functions">Variadic Functions</a>
<hr>
</div>
<h4 class="subsection">A.2.3 Example of a Variadic Function</h4>
<p>Here is a complete sample function that accepts a variable number of
arguments. The first argument to the function is the count of remaining
arguments, which are added up and the result returned. While trivial,
this function is sufficient to illustrate how to use the variable
arguments facility.
<!-- Yes, this example has been tested. -->
<pre class="smallexample"> #include &lt;stdarg.h&gt;
#include &lt;stdio.h&gt;
int
add_em_up (int count,...)
{
va_list ap;
int i, sum;
va_start (ap, count); /* <span class="roman">Initialize the argument list.</span> */
sum = 0;
for (i = 0; i &lt; count; i++)
sum += va_arg (ap, int); /* <span class="roman">Get the next argument value.</span> */
va_end (ap); /* <span class="roman">Clean up.</span> */
return sum;
}
int
main (void)
{
/* <span class="roman">This call prints 16.</span> */
printf ("%d\n", add_em_up (3, 5, 5, 6));
/* <span class="roman">This call prints 55.</span> */
printf ("%d\n", add_em_up (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
return 0;
}
</pre>
</body></html>