#include<stdio.h>
#include <stdarg.h>
// The sum() function can accept variable number of arguements.
int sum( int num_of_arguments, ... )
{
/* A list to store the aruements. In example, this may contain
1,2,3 and 4 elements on successive calls from main()
*/
va_list args;
int sum= 0 , i;
/* Directing the va_list args initialized above to start storing
all parameters folloowing the first parameter 'num_of_arguments'.
*/
/* Loop until all parameters are seen. */
for ( i= 0 ; i< num_of_arguments; i++ )
/* Extract the next value in argument list and add it to sum. */
/* Signal that we are done with our usage of the list */
return sum; /* Returns the calculated sum.*/
}
int main( )
{
int result;
result= sum ( 1 , 1 ) ;
printf ( "result of calling sum() with 2 arguement: %d \n " , result
) ;
result= sum ( 2 , 1 , 2 ) ;
printf ( "result of calling sum() with 3 arguement: %d \n " , result
) ;
result= sum ( 3 , 1 , 2 , 3 ) ;
printf ( "result of calling sum() with 4 arguement: %d \n " , result
) ;
result= sum ( 4 , 1 , 2 , 3 , 4 ) ;
printf ( "result of calling sum() with 5 arguement: %d \n " , result
) ;
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGFyZy5oPgoKLy8gVGhlIHN1bSgpIGZ1bmN0aW9uIGNhbiBhY2NlcHQgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VlbWVudHMuCmludCBzdW0oaW50IG51bV9vZl9hcmd1bWVudHMsIC4uLiApCnsKICAvKiBBIGxpc3QgdG8gc3RvcmUgdGhlIGFydWVtZW50cy4gSW4gZXhhbXBsZSwgdGhpcyBtYXkgY29udGFpbgogICAgIDEsMiwzIGFuZCA0IGVsZW1lbnRzIG9uIHN1Y2Nlc3NpdmUgY2FsbHMgZnJvbSBtYWluKCkKICAqLwogIHZhX2xpc3QgYXJnczsgICAKICBpbnQgc3VtPSAwLCBpOwoKICAvKiBEaXJlY3RpbmcgdGhlIHZhX2xpc3QgYXJncyBpbml0aWFsaXplZCBhYm92ZSB0byBzdGFydCBzdG9yaW5nCiAgICAgYWxsIHBhcmFtZXRlcnMgZm9sbG9vd2luZyB0aGUgZmlyc3QgcGFyYW1ldGVyICdudW1fb2ZfYXJndW1lbnRzJy4KICAqLwogIHZhX3N0YXJ0IChhcmdzLCBudW1fb2ZfYXJndW1lbnRzICk7CiAgCiAgLyogTG9vcCB1bnRpbCBhbGwgcGFyYW1ldGVycyBhcmUgc2Vlbi4gKi8KICBmb3IgKGk9IDA7IGk8IG51bV9vZl9hcmd1bWVudHM7IGkrKyApIAogICAgLyogRXh0cmFjdCB0aGUgbmV4dCB2YWx1ZSBpbiBhcmd1bWVudCBsaXN0IGFuZCBhZGQgaXQgdG8gc3VtLiAqLwogICAgc3VtICs9IHZhX2FyZyAoYXJncyxpbnQpOyAKCiAgLyogU2lnbmFsIHRoYXQgd2UgYXJlIGRvbmUgd2l0aCBvdXIgdXNhZ2Ugb2YgdGhlIGxpc3QgKi8KICB2YV9lbmQgKGFyZ3MpOwoKICByZXR1cm4gc3VtOyAgLyogUmV0dXJucyB0aGUgY2FsY3VsYXRlZCBzdW0uKi8KfQppbnQgbWFpbigpCnsKICAgIGludCByZXN1bHQ7CiAgICAKICAgIHJlc3VsdD1zdW0gKDEsMSk7CiAgICBwcmludGYoInJlc3VsdCBvZiBjYWxsaW5nIHN1bSgpIHdpdGggMiBhcmd1ZW1lbnQ6ICVkIFxuIiwgcmVzdWx0KTsKICAgIAogICAgcmVzdWx0PXN1bSAoMiwxLDIpOwogICAgcHJpbnRmKCJyZXN1bHQgb2YgY2FsbGluZyBzdW0oKSB3aXRoIDMgYXJndWVtZW50OiAlZCBcbiIsIHJlc3VsdCk7CiAgICAKICAgIHJlc3VsdD1zdW0gKDMsMSwyLDMpOwogICAgcHJpbnRmKCJyZXN1bHQgb2YgY2FsbGluZyBzdW0oKSB3aXRoIDQgYXJndWVtZW50OiAlZCBcbiIsIHJlc3VsdCk7CiAgICAKICAgIHJlc3VsdD1zdW0gKDQsMSwyLDMsNCk7CiAgICBwcmludGYoInJlc3VsdCBvZiBjYWxsaW5nIHN1bSgpIHdpdGggNSBhcmd1ZW1lbnQ6ICVkIFxuIiwgcmVzdWx0KTsKICAgIAogICAgcmV0dXJuIDA7Cn0=