Curioustab
Aptitude
General Knowledge
Verbal Reasoning
Computer Science
Interview
Aptitude
General Knowledge
Verbal Reasoning
Computer Science
Interview
Variable Number of Arguments Questions
Point out the error in the following program. #include<stdio.h> #include<stdarg.h> fun(...); int main() { fun(3, 7, -11.2, 0.66); return 0; } fun(...) { va_list ptr; int num; va_start(ptr, n); num = va_arg(ptr, int); printf("%d", num); }
Point out the error in the following program. #include<stdio.h> #include<stdarg.h> int main() { void display(int num, ...); display(4, 12.5, 13.5, 14.5, 44.3); return 0; } void display(int num, ...) { float c; int j; va_list ptr; va_start(ptr, num); for(j=1; j<=num; j++) { c = va_arg(ptr, float); printf("%f", c); } }
Point out the error in the following program. #include<stdio.h> #include<stdarg.h> int main() { void display(char *s, int num1, int num2, ...); display("Hello", 4, 2, 12.5, 13.5, 14.5, 44.0); return 0; } void display(char *s, int num1, int num2, ...) { double c; char s; va_list ptr; va_start(ptr, s); c = va_arg(ptr, double); printf("%f", c); }
Point out the error if any in the following program (Turbo C). #include<stdio.h> #include<stdarg.h> void display(int num, ...); int main() { display(4, 'A', 'a', 'b', 'c'); return 0; } void display(int num, ...) { char c; int j; va_list ptr; va_start(ptr, num); for(j=1; j<=num; j++) { c = va_arg(ptr, char); printf("%c", c); } }
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); }
Point out the error in the following program. #include<stdio.h> #include<stdarg.h> void display(char *s, ...); void show(char *t, ...); int main() { display("Hello", 4, 12, 13, 14, 44); return 0; } void display(char *s, ...) { show(s, ...); } void show(char *t, ...) { int a; va_list ptr; va_start(ptr, s); a = va_arg(ptr, int); printf("%f", a); }
Point out the error in the following program. #include<stdio.h> #include<stdarg.h> void varfun(int n, ...); int main() { varfun(3, 7, -11.2, 0.66); return 0; } void varfun(int n, ...) { float *ptr; int num; va_start(ptr, n); num = va_arg(ptr, int); printf("%d", num); }
The macro va_start is used to initialise a pointer to the beginning of the list of fixed arguments.
A function that receives variable number of arguments should use va_arg() to extract the last argument from the variable argument list.
va_list is an array that holds information needed by va_arg and va_end
The macro va_arg is used to extract an argument from the variable argument list and advance the pointer to the next argument.
A function that receives variable number of arguments should use va_arg() to extract arguments from the variable argument list.
For a function receives variable number of arguments it is necessary that the function should receive at least one fixed argument.
In a function that receives variable number of arguments the fixed arguments passed to the function can be at the end of argument list.
It is necessary to call the macro va_end if va_start is called in the function.
Can we pass a variable argument list to a function at run-time?
While defining a variable argument list function we drop the ellipsis(...)?
Can we write a function that takes a variable argument list and passes the list to another function?
Can the fixed arguments passed to the function that accepts variable argument list, occur at the end?
Is it necessary that in a function which accepts variable argument list there should be at least be one fixed argument?
1
2