Learnerslesson
   JAVA   
  SPRING  
  SPRINGBOOT  
 HIBERNATE 
  HADOOP  
   HIVE   
   ALGORITHMS   
   PYTHON   
   GO   
   KOTLIN   
   C#   
   RUBY   
   C++   




C++ - FUNCTION ARGUMENTS


Say, you want to pass some information to a Function.


For example, if you want a Function to add two numbers. You need to pass those two numbers to the Function.


Say, in the below example, you want the add Function to add two numbers for you. And you have passed those numbers in between the brackets () of the add Function(i.e. firstNumber and secondNumber).


And those elements inside the brackets () of the add Function is called as Parameters and the actual values passed to them are called as Arguments.


Example :



#include <iostream>
using namespace std;

//Add function starts here.
int add(int firstNumber, int secondNumber) {
        
    int result;
    result = firstNumber + secondNumber;
    return result;
}

int main() {
    int firstNum = 5;
    int secondNum = 8;
    int addedResult;

    addedResult = add(firstNum,secondNum);

    cout << "The added value is : " << addedResult;
}


Output :



  The added result is : 13

So, the variables inside the add() Function is called as Parameter.

java_Collections

And the actual values (i.e. 5 and 8) to be sent to the Function are the Arguments.


Throughout the tutorial we will be calling the Parameters as Arguments to avoid unnecessary confusion.


Now, what if, you have defined a Function with two Argument but made the Function call with one argument.


What if there is an Argument mismatch?


Now, what if, you have defined a Function with two Argument but made the Function call with one argument.


Example :



#include <iostream>
using namespace std;

//Add function starts here.
int add(int firstNumber, int secondNumber, int thirdNumber) {
        
    int result;
    result = firstNumber + secondNumber + thirdNumber;
    return result;
}

int main() {
    int firstNum = 5;
    int secondNum = 8;
    int addedResult;

    addedResult = add(firstNum,secondNum);

    cout << "The added value is : " << addedResult;
}


Output :



  error: too few arguments to function int add(int, int, int)

So, in the above code we have the add Function with three Arguments.


int add(int firstNumber, int secondNumber, int thirdNumber)
java_Collections


But when the add Function is called, it is called with two Arguments only.

java_Collections

And there is a mismatch of Arguments. And we end up with the below error.


error: too few arguments to function int add(int, int, int)

Let us see in the next example, how to fix it.


Fixing Argument mismatch with default arguments in function definition


To solve the problem of Argument mismatch, we use default arguments in function definition.


Let us see in the below example.


Example :



#include <iostream>
using namespace std;

//Add function starts here.
int add(int firstNumber, int secondNumber, int thirdNumber = 11) {
        
    int result;
    result = firstNumber + secondNumber + thirdNumber;
    return result;
}

int main() {
    int firstNum = 5;
    int secondNum = 8;
    int addedResult;

    addedResult = add(firstNum,secondNum);

    cout << "The added value is : " << addedResult;
}


Output :



  The added result is : 24

So, in the previous example, we got the error as,


error: too few arguments to function int add(int, int, int)

And, to avoid the Argument mismatch problem, we have used default arguments in function definition.


Placing default arguments in function definition.


int add(int firstNumber, int secondNumber, int thirdNumber = 11)
java_Collections


So, we have placed the default value, 11 for the third argument


Now, although the function is called with two parameters,


addedResult = add(firstNum,secondNum);

With values, 5 and 8.


int firstNum = 5;
int secondNum = 8;
java_Collections

java_Collections

The function add() is called. And firstNum is passed to firstNumber and secondNum to secondNumber.


So, what happens to the third argument?


Well! It gets initialised with the default value 11.

java_Collections