Variadic function in C: so let’s say you want to add 2 numbers using you own defined function. Here is the code

But if the scenario is like you need to add three numbers, or maybe four numbers, or sometimes five numbers; will this function work for you? Definitely not! In this case, you need to design a function that can take valuable number of parameters so that you can pass 2 parameters, 3 parameters, ….. , n number of parameters. That is known as variadic function in C. Lets take a look at this code



Line 4: The function add() takes a number of arguments (a ranges from 0 to n) and returns a double. The first argument in the function call is assigned to the a. The … (three dot) means this is a variadic function.
Line 6: Declaring a double type variable sum which will be storing the sum of the numbers.
Line 7: We have declared a va_list named nums. Just think it as a special type of array. This special array nums will contain (not yet contained) all the variable number of parameters passed to the function add().
Line 8: This line will make the nums to contain all the a number of parameters.
Line 9: We have a for loop which will run a times to access each and every parameters
Line 10: The va_arg(nums, double) returns one by one parameters (which must be double type. If the parameter is not in double type, it will return 0) for each function call. Note: you can not access like nums[i] as nums is a special type of array.
Line 10: va_end(sums) cleans up va_list sums.
Line 11: The sum is returned.

Think about one thing. Can we pass integer and floating point numbers at the same time to a variadic function? I hope you have got your answer.
I hope I have made the variadic function in C clear to you. If you have forgotten the function in C, please take a look at this post. Thank you.