Summary: in this tutorial, you will learn about the C functions and how to define your functions.
Introduce to C functions. #
In programming, you often organize a large program in smaller pieces. Each piece is more manageable than the original program. To divide the program into smaller pieces, you use functions.
A function is a named block of code that performs a specific task.
In the previous tutorials, you have learned various C functions such as printf()
and scanf()
from the stdio.h
library.
To output a piece of text to the standard output, you call the printf()
function. When you call the printf()
function, C will execute the code of the printf()
function.
A function may accept inputs. The inputs of a function are called arguments. For example, the printf()
function accepts multiple arguments:
printf("Counter %d", counter);
Code language: JavaScript (javascript)
In this example, the "Counter %d"
and counter
variable are the inputs of the printf()
function. They are also called the arguments of the printf()
function.
A function may return a value. For example, the sqrt()
function from the math.h
library returns the square root of a number:
float number = 81;
float result = sqrt(number); // 9
Code language: JavaScript (javascript)
Besides providing standard functions, C allows you to define your functions. These functions are known as custom functions.
You must specify a function prototype and function definition to define a custom function.
Function prototype #
The following shows how to define a function prototype:
return_type function_name(parameter_list);
In this syntax:
- First, specify the type of return value. If a function doesn’t return any value, you use the
void
keyword. - Second, provide the name of the function. The function name should describe exactly what it does.
- Third, specify the parameters within the parentheses that follow the function name. If a function has multiple parameters, you use a comma (,) to separate two parameters. If the function has no parameters, you can leave it empty or use the
void
keyword.
Function definition #
The syntax of the function definition is as follows:
return_type function_name(parameter_list)
{
// statements
}
Code language: JavaScript (javascript)
The function definition looks like the function prototype, except it has a function body.
The function body is wrapped between curly braces {}
that follow the parentheses. Inside the function body, you can have one or more statements.
Return value
To return a value from a function, you use the return
statement followed by a return value:
return expression;
Code language: JavaScript (javascript)
When the program encounters the return
statement, it immediately stops the function and returns the value to the caller.
If you want to stop the function without returning a value, you can omit the expression in the return
statement like this:
return;
Code language: JavaScript (javascript)
Typically, you place the function prototype at the beginning of the file before the main()
function. You define the function after the main()
function as follows:
#include <stdio.h>
// function prototypes
return_type function_name(parmeter_list);
int main()
{
// statements
return 0;
}
// function definition
return_type function_name(parmeter_list)
{
// function body
}
Code language: PHP (php)
When you call a function, the C compiler checks the function call against the function prototype. If they don’t match, the compiler issues a compilation error.
For example, if the function prototype has three parameters, but the function call only has two, the compiler will issue a compilation error.
Also, if the function prototype and function definition disagree, the compiler will issue a compilation error.
C function example #
The following example illustrates how to create a custom function. It prompts for two numbers and displays the larger number.
#include <stdio.h>
int max(int a, int b);
int main()
{
int x, y, m;
// prompt for two integers
puts("Enter two numbers to find the max:");
scanf("%d", &x);
scanf("%d", &y);
// find the max
m = max(x, y);
printf("The max of %d and %d is %d", x, y, m);
return 0;
}
// return the max of two numbers
int max(int a, int b)
{
if (a > b)
return a;
else
return b;
}
Code language: C++ (cpp)
How it works.
First, declare a function prototype that finds the maximum number of two numbers:
int max(int a, int b);
The max()
function has two parameters of type integer (int
). It also returns an integer (int
).
Second, define the max()
function definition after the main()
function:
// return the max of two numbers
int max(int a, int b)
{
if (a > b)
return a;
else
return b;
}
Code language: JavaScript (javascript)
The max()
function returns a
if a
is greater b
. Otherwise, it returns b
.
Third, prompt for two integers in the main()
function:
puts("Enter two numbers to find the max:");
scanf("%d", &x);
scanf("%d", &y);
Code language: JavaScript (javascript)
Fourth, call the max()
function to get the max of the two input numbers.
// find the max
m = max(x, y);
Code language: JavaScript (javascript)
Finally, show the max of the two numbers:
printf("The max of %d and %d is %d", x, y, m);
Code language: JavaScript (javascript)
Summary #
- A function is a named block of code that performs a specific task.
- To define a custom function, specify the function prototype and function definition.
- Use the
return
statement to return a value from a function.