C Function

Summary: in this tutorial, you will learn about the C functions and how to define your own 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.

By definition, 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 own functions. These functions are known as custom functions.

To define a custom function, you need to specify a function prototype and function definition.

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 list of 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 doesn’t have any 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 that it has a function body.

The function body is wrapped between a pair of 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. And 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 will check the function call with the function prototype. If they don’t match, the compiler will issue 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 also issue a compilation error.

C function example

The following example illustrates how to create a custom function. It’ll prompt for two numbers and display the bigger 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 find 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.
Was this tutorial helpful ?