Skip to content

Instantly share code, notes, and snippets.

@jtbandes
Created July 21, 2010 03:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jtbandes/484015 to your computer and use it in GitHub Desktop.
Save jtbandes/484015 to your computer and use it in GitHub Desktop.
#include <stdio.h>
void addOne(int num);
void addOnePtr(int *num);
int main (int argc, const char * argv[]) {
int i = 3; // an int
printf("i == %d\n", i);
printf("&i == %p\n", &i); // reference/address-of operator &
int *ip = &i; // a pointer to an int, type (int *)
printf("ip == %p\n", ip);
printf("*ip == %d\n", *ip); // dereference operator *
printf("--------\n"
"*ip = 4;\n");
*ip = 4; // dereference operator *
printf("ip == %p\n", ip);
printf("&i == %p\n", &i);
printf("*ip == %d\n", *ip);
printf("i == %d\n", i);
printf("--------\n");
addOne(i);
printf("i == %d\n", i);
addOnePtr(&i);
printf("i == %d\n", i);
return 0;
}
void addOne(int num) {
printf("addOne called -- num: %d (&num: %p)\n", num, &num);
num++;
printf("addOne: num == %d\n", num);
}
void addOnePtr(int *num) {
printf("addOnePtr called -- num: %p (*num: %d)\n", num, *num);
(*num)++;
printf("addOnePtr: (num == %p) *num == %d\n", num, *num);
}
@jonsterling
Copy link

Practicing pointers?

@jtbandes
Copy link
Author

Teaching them!

@jonsterling
Copy link

Ah, neat! This is a fun little demo… Should be enough to demystify them for anyone, I think.

@jtbandes
Copy link
Author

Hopefully! I'm thinking of adding a section on arrays as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment