// argumentdemo, muh, 4/2019 // shows various types of arguments and behavior #include // demo functions here int demoint (int d) { d = d*100; return d; } int demopointer (int *p) { // p is a pointer to an int *p = *p *10; return (*p + 5); // return an int } int morepointer (int *p) { int d = *p; // value located at p int *q = &d; // q is pointer to d *p = *q; // value in p equals value of q printf ("Addresses %p (p) and %p (q).\n", p, q); printf ("Values of %d (p) and %d (q).\n", *p, *q); *p = *q + 1; return *q + 2; } int main (int argc, char **argv) { int mainint = 3; int *mainintptr = &mainint; // hold address of mainint int returnint; // test passing just the integer returnint = demoint(mainint); printf("\ndemoint: mainint=%d, returnint=%d\n", mainint, returnint); // test passing a pointer returnint = demopointer(mainintptr); printf("\ndemopointer: mainint=%d, returnint=%d\n", mainint, returnint); // test more complicated pointer returnint = morepointer(mainintptr); printf("\nmorepointer: mainint=%d, returnint=%d\n\n", mainint, returnint); return 0; // return a value to show we succeeded }