Functions with Variable Number of Arguments in C++

Learn via video course
FREE
View all courses
C++ Course: Learn the Essentials
C++ Course: Learn the Essentials
by Prateek Narang
1000
5
Start Learning
C++ Course: Learn the Essentials
C++ Course: Learn the Essentials
by Prateek Narang
1000
5
Start Learning
Topics Covered

Overview

The variable number of arguments in C++ is a feature that permits a function to accept any number of arguments. This type of function is called variadic functions or functions with a variable number of arguments in C++.

Introduction to Variable Arguments

In C++ programming, you can find yourself in a scenario where you need a function that can take a variable number of arguments, i.e., parameters, rather than a fixed number. The C/C++ programming language has a solution for this problem; you can construct a function that accepts various parameters depending on your needs.

Based on user requirements, a variable number of arguments can be of two types:

  • When the data type of all the arguments is the same
  • When the data type of all the arguments is different.

Scaler Placement Report and Statistics

₹23L
AVG CTC
SCALER PLACEMENT PROOF

Scaler learners achieved 2.5x salary growth with average post-Scaler CTC reaching ₹23L.

11,000+placements
650+companies
Verified data

Implementation Technique of Variable Arguments before C++11 Update

When the Data Type of all the Arguments Is the Same

In this case, a vector or an array of the required data type can be passed in a function.

Syntax:

When the Data Type of all the Arguments is Different.

In this case, variadic functions are declared under the cstdarg header file.

Transform Your Career

Choose from our industry-leading programs designed for career success

NSDC Certified

Modern Software and AI Engineering Program

Master full-stack development with AI integration

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

Modern Data Science and ML with specialisation in AI

Advanced data science techniques with AI specialization

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

Advanced AIML with Specialisation in Agentic AI

Deep dive into AIML with focus on Agentic systems

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

DevOps, Cloud & AI Platform Engineering

Build and manage AI-powered cloud infrastructure

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

AI Engineering Advanced Certification by IIT-Roorkee

Premier AI engineering certification from IIT-Roorkee

3 MonthsDuration
AI-LedCurriculum
Career SupportSupport
Program highlights
Go to Program

Implementation Technique of Variable Arguments after C++11 Update

When the Data Type of all the Arguments is the Same

After the C++11 update, we have the concept of an initializer list that can take the same data type variable arguments. For this, the header file <intializer_list> needs to be included.

Syntax:

When the Data Type of all the Arguments is Different.

Variadic templates can also be used to generate functions with variable arguments. Variadic templates have the advantage of not imposing limits on the types of arguments, not performing integral and floating-point promotions, and being type-safe.

Steps To Implement the Functionality of Variable Arguments

In this section, we will see some examples of functions with a variable number of arguments in C++.

Implementation of Same Data Type Variable Arguments

Turn Learning into Career Growth

1200+Hiring Partners
89%Placement Rate
11,000+Placements
147%Avg Salary Increment
2.5XCareer Growth
₹23 LPAAvg Post-Scaler Salary
1200+Hiring Partners
89%Placement Rate
11,000+Placements
147%Avg Salary Increment
2.5XCareer Growth
₹23 LPAAvg Post-Scaler Salary

Implementation Using "vector":

  • Include <vector> header file.
  • Define a function having parameter as a vector of required data type.
  • Call the above-defined function from the main() function with parameter as the variable arguments inside the curly braces.

Code:

Output:

Implementation Using "initializer_list":

  • Include <initializer_list> header file.
  • Define a function having a parameter as an initializer_list of the required data type.
  • Call the above-defined function from the main() function with parameter as the variable arguments inside the curly braces.

Code:

Output:

Implementation of Different Data Type Variable Arguments

Implementation Using "cstdarg"

The header file cstdarg contains variadic functions and macros for implementing a function's variable number of arguments.

Variadic functions take a variable number of arguments (for example, std::printf). An ellipsis appears after the list of parameters, e.g., int printf(const char* format...);, which may be preceded by an optional comma, to declare a variadic function.

The following library facilities are given to access the variadic arguments from the function body:

MacroUsage
va_startAllows variable function arguments to be accessed
va_argAccesses the next variadic function argument
va_copyMakes a copy of the variadic function arguments
va_endEnds traversal of the variadic function arguments
va_list (not a macro, but typedef)Stores the information that va_start, va_arg, va_end, and va_copy require

Code

Output:

Implementation Using Variadic Templates

  • Declare a template with typename T.
  • Define a function with a parameter t of datatype T.
  • Declare another template with typename T and typename... Args.
  • Define another function with the same name having two parameters. First, t with datatype T, and the second, args with type Args....
  • Call the above function from the main() function with variable number of arguments.

Code:

Output:

Examples of Functions with Variable Number of Arguments In C++

Scaler Placement Report and Statistics

₹23L
AVG CTC
SCALER PLACEMENT PROOF

Scaler learners achieved 2.5x salary growth with average post-Scaler CTC reaching ₹23L.

11,000+placements
650+companies
Verified data

Finding Maximum of Integer and Floating Point Numbers

Code:

Output:

Conclusion

  • The variable number of arguments in C++ is a feature that permits a function to accept any number of arguments. This type of function is called variadic functions.
  • Functions with a variable number of arguments in C++ can be easily implemented using a vector or an array if all the arguments are the same type.
  • If all arguments are of different types, then we need to use the cstdarg header file to implement variadic functions.
  • Variadic functions do not put restrictions on the types of arguments. They also do not perform integer and floating-point enhancements.
  • The header files to be imported are cstdarg.

See Also:

Hiring Partners:
GoogleGoogleAmazonAmazonMicrosoftMicrosoftFlipkartFlipkartAdobeAdobe1200+ more