Example C code -- focussing on use of pointers /* ********************* */ // rvalue and lvalue int x; int* p; int** q; x = 3; p = &x; q = &p; printf("%d %d %d\n", x, *p, **q); int y, z; y = * p; z = **q; /* ***************** */ // swap function example int swap (int *x, int *y) { int t = *x; *x = *y; *y = t; } main() { int a = 3, b = 5; swap (&a, &b); // print (a, b) } */ /* ************ */ // a[i], *(a+i) int[5] arr1 = {0, 10, 20, 30, 40}; int * arr2; int i; arr2 = arr1; for (i = 0; i < 5; i++) printf( "%d %d\n", arr1[i], *(arr2 + i) ); /* 0 0 10 10 20 20 ... */ char *fname = "abc"; char[] lname = "ABC"; printf("%s: \n", fname); printf("%s: \n", lname); /* http://scitechconnect.elsevier.com/why-write-code/?utm_source=socialmedia&utm_medium=compsci&utm_campaign=Why%20Write%20Code%3F&sf14216017=1 */ unsigned int n = 0x0A0B0C0D; unsigned char c, d, *p; c = (unsigned char) n; p = (unsigned char *) &n; d = *p /* function pointers */ int addi (int x, int y) { return x + y; } int subi (int x, int y) { return x - y; } int useFunctionPtr (int a, int b, int (* fun) (int, int)) { return fun (a, b); } int main () { int x = 3, y = 5, result; result = useFunctionPtr (x, y, &addi); // output result result = useFunctionPtr(x, y, &sub1); // output result }