A function is a subprogram that is used to perform a predefined operation and optionally return a value. Using functions, we can avoid repetitive coding in programs and simplify as well as speed up program development.
The C language provides two types of functions: library functions and user-defined functions. Library functions relieve a programmer from writing code for commonly used functionality. If the desired functionality is not available in a library, programmer can define new function(s) to perform the desired operations. Such functions are called user defined functions.
Once a function is defined (either in the standard library or by the user) it can be called (i. e., used) to perform its intended operation. During a function call, a function may accept one or more inputs as arguments, process them and return the result to the calling program. For example, in function call sqrt (x), the sqrt function accepts the value of x as input and returns its square root. Similarly, function call log (x + y) returns the natural logarithm of the argument x+y, and function call pow (x , y) returns the value of xY. Note that the function arguments are enclosed within parentheses and are separated by commas.
A function call takes the following form:
funcname ( arg1, arg2, ... )
Where func_name is the name of the function and arg1, arg2, ... are argument expressions. Note that the arguments are separated by commas and are enclosed within parentheses. The arguments usually provide the input to a function. However, we can use argument variables to obtain output from a function as well.
The number of arguments and their types in a function call must correspond to the parameters specified in the declaration or prototype1· of that function. The sequence of arguments in a function call must also be correct. For example, to calculate ab, we call the standard library function pow as pow (a, b) but not as pow (b, a).
When a function is called, the argument expressions are evaluated and assigned to the function parameters. If the type of an argument is different from that of the corresponding function parameter, the argument value is converted, if possible, to that type. Otherwise, the compiler reports a type mismatch error.
Expressions Containing Function Calls
If a function returns a value, we can assign it to a variable of appropriate type. We can also call such a function from within an expression. An expression may contain one or more function calls. C also allows function calls to be nested, i. e., one function call to be written inside another.
During the evaluation of an expression containing function calls, the calls are considered as single operands. Hence, they should be evaluated before the evaluation of adjacent operators. If an expression contains nested function calls, the inner function calls are evaluated before the outer ones.
Function Call as C Statement
If a function does not return a value (or if we are not interested in the value returned by it), a function call takes the form of a C statement in which the function call is followed by a semicolon as shown below.
printf("Enter values of a and b: ");
scanf("%d %d", &a, &b);
printf("The values are a= %d b = %d", a, b);
In these statements, the values returned by the scanf and printf functions are ignored.