In the following example, ary is an array of two function pointers. Type casting is performed to the values assigned to ary for compatibility:
#include <stdio.h>
int func1(void);
void func2(double a);
int main(void)
{
double num;
int retnum;
void (*ary[2]) ();
ary[0] = ((void(*)())func1);
ary[1] = ((void(*)())func2);
((int (*)())ary[0])(); /* calls func1 */
((void (*)(double))ary[1])(num); /* calls func2 */
}
int func1(void)
{
int number=3;
return number;
}
void func2(double a)
{
a=333.3333;
}
The following example is a complete definition of the function sum:
int sum(int x,int y)
{
return(x + y);
}
The function sum has external linkage, returns an object that has type int, and has two parameters of type int declared as x and y. The function body contains a single statement that returns the sum of x and y.
The following example contains a function declarator sort with table declared as a pointer to int, and length declared as type int. Note that arrays as parameters are implicitly converted to a pointer to the type.
void sort(int table[], int length)
{
int i, j, temp;
for (i = 0; i < length - 1; i++)
for (j = i + 1; j < length; j++)
if (table[i] > table[j])
{
temp = table[i];
table[i] = table[j];
table[j] = temp;
}
}
The following examples contain prototype function declarators:
double square(float x); int area(int x, int y); static char *search(char);
The following example shows how a typedef function can be used in a function declarator:
typedef struct tm_fmt { int minutes;
int hours;
char am_pm;
} struct_t;
long time_seconds(struct_t arrival)
The following function set_date declares a pointer to a structure of type date as a parameter. date_ptr has the storage class specifier register.
set_date(register struct date *date_ptr)
{
date_ptr->mon = 12;
date_ptr->day = 25;
date_ptr->year = 87;
}
![]()
main()
Function
Function
Declarations
Function
Definitions
Examples of Function
Calls
Example of the
main() Function
Examples of Function
Declarations