C Functions


All C programs has at least one function, which is main(),  and all the most simple programs define more functions.

A function is a group of statements that together perform a task. You can divide up your code into separate functions. How you divide up your code among different functions is up to you, but logically the division is such that each function performs a specific task.

A function declaration tells the compiler about a function's name, return type, and parameters. A function definition provides the actual body of the function.

The C standard library provides numerous built-in functions that your program can call. For example, printf() to print formated strings, memcpy() to copy one memory location to another location.

A function maybe referred as a method or a sub-routine or a procedure, etc.


Defining a Function

The general form of a function definition in C programming language is as follows


return_type function_name( parameter list ) {
 function body

A function definition in C programming consists of a function header and a function body. Here are all the parts of a function −

Return Type : A function may return a value. The return_type is the data type of the value the function returns. Some functions perform the desired operations without returning a value. In this case, the return_type is the keyword void.

Function Name : This is the actual name of the function. The function name and the parameter list together constitute the function signature.

Parameters:  A parameter is like a placeholder. When a function is invoked, you pass a value to the parameter. This value is referred to as actual parameter or argument. The parameter list refers to the type, order, and number of the parameters of a function. Parameters are optional; that is, a function may contain no parameters.

Function Body : The function body contains a collection of statements that define what the function does.



Given below is the source code for a function called max(). This function takes two parameters v1 and v2 and returns the maximum value between the two −

/* function returning the max value of two numbers */
int max(int v1, int v2) {

   /* local variable declaration */
   int result;
 if (v1 > v2)
    result = v1;
    result = v2;
   return result; 


Function Declarations

A function declaration tells the compiler about a function name and how to call the function. The actual body of the function can be defined separately.

A function declaration has the following parts −

return_type function_name( parameter list );
For the above defined function max(), the function declaration is as follows −

int max(int num1, int num2);
Parameter names are not important in function declaration only their type is required, so the following is also a valid declaration −

int max(int, int);
Function declaration is required when you define a function in one source file and you call that function in another file. In such case, you should declare the function at the top of the file calling the function.


Calling a Function

While creating a C function, you give a definition of what the function has to do. To use a function, you will have to call that function to perform the defined task.

When a program calls a function, the program control is transferred to the called function. A called function performs a defined task and when its return statement is executed or when its function-ending closing brace is reached, it returns the program control back to the main program.

To call a function, you simply need to pass the required parameters along with the function name, and if the function returns a value, then you can store the returned value:

#include <stdio.h>
/* function declaration */
int max(int v1, int v2);
int main () {

   /* local variable definition */
   int a = 100;
   int b = 200;
   int ret;
   /* calling a function to get max value */
   ret = max(a, b);
   printf( "Max value is : %d\n", ret );
   return 0;
/* function returning the max between two numbers */
int max(int v1, int v2) {

   /* local variable declaration */
   int result;
 if (v1 > v2)
    result = v1;
    result = v2;
   return result; 

We have kept max() along with main() and compiled the source code. While running the final executable, it would produce the following result −

Max value is : 200


Function Arguments

Functions that use arguments, need to declare variables to hold the arguments values  These variables are called the formal parameters of the function.

Formal parameters behave like other local variables inside the function and are created upon entry into the function and destroyed upon exit.

While calling a function, there are two ways in which arguments can be passed to a function −



Function Call by Value

In this  method  programs makes another copy of  the actual value of an argument, and because the function body operates on a copy of the value  changes made to the local copy's value doesn't alter the original value.



Function Call by Reference

In this  method  programs  copies  the argument's memory address, the address is used to operate on the actual data, thus changes made within funtion body doesn't alter the original value.


Read also

C Recursion

Recursion in programming is the process of calling a procedure repeatedly in a self-similar way, a recursive function or routine is a function that call itself repeatedly. void recursion() { recursion(); /* function calls itself */ } int main() { recursion(); } The C programming language supports recursion, i.e., a function to call itself. But while using recursion, programmers need to be careful to define an exit condition from the function, otherwise it will go into an...

Go Range

The range keyword is used to iterate over elements of an slice, array, map or channel. range over Arrays and Slices Use one variable to get the index of an element. Use two varaibles to get both index and the value of an element. range over Maps Use one variable to get the key of an element. Use two varaibles to get both key and the value of an element. range over Channels Use one variable to get the value of an element. How to use range ? ...

Go Structures

Go Structures are a user-defined data type available in Golang, which allows you to combine different values types (including structures) into one type, its similar to Classes in other object-oriented programming languages, Assume you want to keep track of the articles in a blog. You might want to track the following attributes of each article − Title Body Category Author Defining a Structure To define a structure, you must use type and struct statements. The struct statement ...

Using Linux Debian As Router Setup

In this articles series you will learn how to setup Linux (Debian) as a Router for home/business local networks, to spice things I''ll show how to add dns server, proxy/web caching server, and basic web traffic filter to our cute debian box.   In this series I''ll go over: Introduction . Hardware Requirements . Software installation . Basic Setup . /etc/network/Interfaces Configuration . Unbound dns server setup . DHCP server setup . Squid setup. ...

Php Predefined Variables

PHP  language has relatively  large number of predefined variables. Moreover an additional set of predefined arrays containing variables from the web server the environment, and user input. These new arrays are called SUPERGLOBALS Although many PHP frameworks provide abstractions over these superglobals, you still can access these variables as they are always  automatically available in all scopes, PHP SUPERGLOBALS Variable & Description $GLOBALS ...