C Programming - Variable Number of Arguments - Discussion

Discussion Forum : Variable Number of Arguments - Point Out Errors (Q.No. 3)
3.
Point out the error in the following program.
#include<stdio.h>
#include<stdarg.h>
void varfun(int n, ...);

int main()
{
    varfun(3, 7, -11, 0);
    return 0;
}
void varfun(int n, ...)
{
    va_list ptr;
    int num;
    num = va_arg(ptr, int);
    printf("%d", num);
}
Error: ptr has to be set at begining
Error: ptr must be type of va_list
Error: invalid access to list member
No error
Answer: Option
Explanation:
Using va_start(ptr, int);
Discussion:
4 comments Page 1 of 1.

Vashalakshi said:   9 years ago
@Prakhar.

It is a recursion the ans is 9.

Because wen the value of x is <= 1 it returns 1.
t = sum(6-1) + sum(6-3)
t = sum(5) + sum(3)
sum(5) = sum(4) + sum(2)
sum(3) = sum(2) + sum(0)
sum(4) = sum(3) + sum(1)
sum(2) = sum(1) + sum(-1)
the condition is when x <=1 it return 1

So sum(2) = 1 +1 = 2
Means sum(-1) = sum(0) = 1 only
So, by adding all values it gives 9 as output.

Thank you have a nice day.

Prakhar said:   1 decade ago
#include<stdio.h>
int sum(int);
int main()
{
int i;
i=sum(6);
printf("%d",i);

return 0;
}
int sum(int x)
{
int t;
if(x<=1)
return 1;
t=sum(x-1)+sum(x-3);
return t;
}



Please explain this question.

Manbir cheema said:   1 decade ago
using va_start(ptr,n);

Nuzhat said:   1 decade ago
nt va_start(ptr,int) bt va_start(ptr,n)

Post your comments here:

Your comments will be displayed after verification.