Functions
Functions
Suppose we need to create a program to create a circle and color it. We can
create two functions to solve this problem:
Dividing a complex problem into smaller chunks makes our program easy to
understand and reusable.
A user-defined function groups code to perform a specific task and that group
of code is given a name (identifier).
When the function is invoked from any part of the program, it all executes the
codes defined in the body of the function.
C++ Function Declaration
// function declaration
void greet() {
cout << "Hello World";
}
Here,
Calling a Function
int main() {
// calling a function
greet();
}
// declaring a function
void greet() {
cout << "Hello there!";
}
int main() {
return 0;
}
Output
Hello there!
Function Parameters
int main() {
int n = 7;
return 0;
}
Example 2: Function with Parameters
// program to print a text
#include <iostream>
using namespace std;
// display a number
void displayNum(int n1, float n2) {
cout << "The int number is " << n1;
cout << "The double number is " << n2;
}
int main() {
int num1 = 5;
double num2 = 5.5;
return 0;
}
Output
In the above program, we have used a function that has one int parameter
and one double parameter.
We then pass num1 and num2 as arguments. These values are stored by the
function parameters n1 and n2 respectively.
C++ function with parameters
Note: The type of the arguments passed while calling the function must match
with the corresponding parameters defined in the function declaration.
Return Statement
In the above programs, we have used void in the function declaration. For
example,
void displayNumber() {
// code
}
It's also possible to return a value from a function. For this, we need to specify
the returnType of the function during function declaration.
Then, the return statement can be used to return a value from a function.
For example,
int add (int a, int b) {
return (a + b);
}
Here, we have the data type int instead of void . This means that the function
returns an int value.
The code return (a + b); returns the sum of the two parameters as the
function value.
The return statement denotes that the function has ended. Any code
after return inside the function is not executed.
#include <iostream>
// declaring a function
int add(int a, int b) {
return (a + b);
}
int main() {
int sum;
return 0;
}
Output
100 + 78 = 178
In the above program, the add() function is used to find the sum of two
numbers.
We pass two int literals 100 and 78 while calling the function.
We store the returned value of the function in the variable sum , and then we
print it.
Working of
C++ Function with return statement
Notice that sum is a variable of int type. This is because the return value
of add() is of int type.
Function Prototype
In C++, the code of function declaration should be before the function call.
However, if we want to define a function after the function call, we need to use
the function prototype. For example,
// function prototype
void add(int, int);
int main() {
// calling the function before declaration.
add(5, 3);
return 0;
}
// function definition
void add(int a, int b) {
cout << (a + b);
}
This provides the compiler with information about the function name and its
parameters. That's why we can use the code to call a function before the
function has been defined.
#include <iostream>
// function prototype
int add(int, int);
int main() {
int sum;
return 0;
}
// function definition
int add(int a, int b) {
return (a + b);
}
Output
100 + 78 = 178
• Functions make the code reusable. We can declare them once and use
them multiple times.
• Functions make the program easier as each small task is divided into a
function.
Programmers can use library functions by invoking the functions directly; they
don't need to write the functions themselves.
Some common library functions in C++ are sqrt() , abs() , isdigit() , etc.
In order to use library functions, we usually need to include the header file in
which these library functions are defined.
For instance, in order to use mathematical functions such as sqrt() and abs() ,
number = 25.0;
cout << "Square root of " << number << " = " << squareRoot;
return 0;
}
Output
Square root of 25 = 5
In this program, the sqrt() library function is used to calculate the square root
of a number.
The function declaration of sqrt() is defined in the cmath header file. That's
why we need to use the code #include <cmath> to use the sqrt() function.
void prime();
int main()
{
// No argument is passed to prime()
prime();
return 0;
}
if (flag == 1)
{
cout << num << " is not a prime number.";
}
else
{
cout << num << " is a prime number.";
}
}
In the above program, prime() is called from the main() with no arguments.
prime() takes the positive number from the user and checks whether the
number is a prime number or not.
Since, return type of prime() is void , no value is returned from the function.
int prime();
int main()
{
int num, i, flag = 0;
if (flag == 1)
{
cout<<num<<" is not a prime number.";
}
else
{
cout<<num<<" is a prime number.";
}
return 0;
}
return n;
}
In the above program, prime() function is called from the main() with no
arguments.
prime() takes a positive integer from the user. Since, return type of the function
is an int , it returns the inputted number from the user back to the
calling main() function.
Then, whether the number is prime or not is checked in the main() itself and
printed onto the screen.
Example 3: Arguments passed but no return value
#include <iostream>
using namespace std;
int main()
{
int num;
cout << "Enter a positive integer to check: ";
cin >> num;
// There is no return value to calling function. Hence, return type of function is void.
*/
void prime(int n)
{
int i, flag = 0;
for (i = 2; i <= n/2; ++i)
{
if (n%i == 0)
{
flag = 1;
break;
}
}
if (flag == 1)
{
cout << n << " is not a prime number.";
}
else {
cout << n << " is a prime number.";
}
}
In the above program, positive number is first asked from the user which is
stored in the variable num .
Then, num is passed to the prime() function where, whether the number is prime
or not is checked and printed.
Since, the return type of prime() is a void , no value is returned from the
function.
int main()
{
int num, flag = 0;
cout << "Enter positive integer to check: ";
cin >> num;
if(flag == 1)
cout << num << " is not a prime number.";
else
cout<< num << " is a prime number.";
return 0;
}
return 0;
}
In the above program, a positive integer is asked from the user and stored in
the variable num .
Then, num is passed to the function prime() where, whether the number is prime
or not is checked.
Since, the return type of prime() is an int , 1 or 0 is returned to the main() calling
function. If the number is a prime number, 1 is returned. If not, 0 is returned.
Back in the main() function, the returned 1 or 0 is stored in the variable flag ,
The particular method is chosen depending upon the situation and how you
want to solve a problem.