helloworld.c
#include<stdio.h> #include<stdlib.h> void Hello(); void Hello() { printf("Hello World!\n"); } int main() { void (*Hello_ptr)() = Hello; //giving the address of "Hello" funciton to the pointer (*Hello_ptr)(); //ugly way Hello_ptr(); //elegent way to use function pointer }
Example2.c
int my_func(int a,int b);
int your_func(int , int);
int main()
{
int (*funcPtr)(int,int); //declare a function pointer --> not pointing to anything now
funcPtr = my_func; //initializing function pointer
//use the function pointer
int x = (*funcPtr)(5,7);
//or
int y = funcPtr(5,7);
}
math_pointers.c
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int sum(int a, int b); 5 int subtract(int a, int b); 6 int mul(int a, int b); 7 int divide(int a, int b); 8 9 int (*p[4]) (int x, int y); 10 11 int main(void) 12 { 13 char buf[80]; 14 int result; 15 int i, j, op; 16 17 p[0] = sum; /* address of sum() */ 18 p[1] = subtract; /* address of subtract() */ 19 p[2] = mul; /* address of mul() */ 20 p[3] = divide; /* address of divide() */ 21 22 printf("Enter two numbers: "); 23 fgets(buf, 80, stdin); 24 sscanf(buf, "%d %d", &i, &j); 25 26 printf("0: Add, 1: Subtract, 2: Multiply, 3: Div, 4: Quit\n"); 27 printf("Enter number of operation: "); 28 fgets(buf, 80, stdin); 29 sscanf(buf, "%d", &op); 30 31 while (op >= 0 && op <= 3) { 32 result = (*p[op]) (i, j); 33 printf("%d\n\n", result); 34 35 printf("0: Add, 1: Subtract, 2: Multiply, 3: Div, 4: Quit\n"); 36 printf("Enter number of operation: "); 37 fgets(buf, 80, stdin); 38 scanf(buf, "%d", &op); 39 } 40 41 42 return 0; 43 } 44 45 int sum(int a, int b) 46 { 47 return a + b; 48 } 49 50 int subtract(int a, int b) 51 { 52 return a - b; 53 } 54 55 int mul(int a, int b) 56 { 57 return a * b; 58 } 59 60 int divide(int a, int b) 61 { 62 if (b) 63 { 64 return a / b; 65 } 66 else 67 { 68 return 0; 69 } 70 }
qSort
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 /* 5 int my_func(void *a, void *b) 6 { 7 int retval = 0; 8 9 if (*a > *b) 10 { 11 retval = 1; 12 } 13 else if (*a < *b) 14 { 15 retval = -1; 16 } 17 else 18 { 19 retval = 0; 20 } 21 22 return retval; 23 } 24 */ 25 26 int cmpfunc (const void * a, const void * b) 27 { 28 return ( *(int*)a - *(int*)b ); 29 } 30 31 int main() 32 { 33 int i; 34 /* int (*myfuncPtr)(void *,void *); 35 * myfuncPtr = my_func; 36 */ 37 38 int array[10] = { 34, 33, 54,234,7645, 22,1, 645,345, 237 }; 39 40 /* int X = myfuncPtr(37, 24); 41 * int X = (*myfuncPtr)(37, 24); 42 */ 43 (*HelloPtr)(); 44 45 for (i = 0; i < 10; i++) 46 { 47 printf("%d\n", array[i]); 48 } 49 50 qsort(array, 10, sizeof(int), cmpfunc); 51 52 for (i = 0; i < 10; i++) 53 { 54 printf("%d\n", array[i]); 55 } 56 }