#include #include #define STRING1 "A macro definition\n" #define STRING2 "must be all on one line!\n" #define EXPRESSION1 1 + 2 + 3 + 4 #define EXPRESSION2 EXPRESSION1 + 10 #define ABS(x) (((x) < 0) ? -(x) : (x)) #define MAX(a,b) ((a < b) ? (b) : (a)) #define BIGGEST(a,b,c) ((MAX(a,b) < c) ? (c) : (MAX(a,b))) int compare_doubles (const void *a, const void *b) { const double *da = (const double *) a; const double *db = (const double *) b; if (*da > *db) {return 1;} else if (*da == *db) {return 0;} else {return -1;} // return (*da > *db) - (*da < *db); } /* int main () { printf (STRING1); printf (STRING2); printf ("%d\n", EXPRESSION1); printf ("%d\n", EXPRESSION2); printf ("%d\n", ABS(-5)); printf ("Biggest of 1, 2, and 3 is %d\n", BIGGEST(1,2,3)); int N = 3; double array[N]; array[0] = 3.0; array[1] = 2.0; array[2] = 1.0; fprintf(stdout, "Before:\n"); for (long i = 0; i < N; i++) { fprintf(stdout, "array[%d] = %f\n", i, array[i]); } qsort (array, N, sizeof (double), compare_doubles); fprintf(stdout, "After:\n"); for (long i = 0; i < N; i++) { fprintf(stdout, "array[%d] = %f\n", i, array[i]); } return 0; } */ //=========== #include // A normal function with an int parameter // and void return type void fun(int a) { printf("Value of a is %d\n", a); } int main() { // fun_ptr is a pointer to function fun() void (*fun_ptr)(int) = &fun; /* The above line is equivalent of following two void (*fun_ptr)(int); fun_ptr = &fun; */ // Invoking fun() using fun_ptr (*fun_ptr)(10); return 0; }