View on GitHub
// declare function
// NOTE: needs to be BEFORE main() when functions are DEFINED AFTER main()
int function(int arg);

// define function
int function(int arg) {
    // do something
    return 0;
}

// EXAMPLE: power function
// declare function
int power(int base, int x);

// main() function
int main(void) {
    // call function
    power(2, 3)
    // 8

    return 0;
}

// define function
int power(int base, int x) {
    /* multiply base with itself x times */

    int result = 1;

    int i;
    for (i = 0; i < x; i++) {
        result = result * base;
    }

    return result;
}

// END EXAMPLE

// variable arguments
#include <stdarg.h>

// OUTSIDE SCOPE: define function with variable arguments
double average(int n, ...) {
    // require stdarg.h
    va_list valist;

    double sum = 0.0;
    int i;

    // initialise valist for n arguments
    va_start(valist, n);

    // access arguments assigned to valist
    for (i = 0; i < n; i++) {
        sum += va_arg(valist, int);
    }

    // clean memory reserved for valist
    va_end(valist);

    return sum / n;
}

// INSIDE SCOPE: use function
printf("Average of 2, 3, 4, 5: %f\n", average(2, 3, 4, 5));
// Average of 2, 3, 4, 5: 3.500000
      

Updated on May 27, 2023 Changelog