/* A concise comparison of * and & pointer operators * in C. * Matt Stephenson, November 2009 * Build on command line with Visual C++ compiler: * > cl /nologo /W4 pointers.c */ #include int main(void) { int value; int *ptr; int **ptr2; printf("\nWe have:\n\nint value;\nint *ptr;\nint **ptr2;\n\n"); printf("Let's assign our variables:\n\n"); printf("value = 0xFF\nptr = &value;\n\n"); value = 0xFF; ptr = &value; printf("Now let's observe * and & operators:\n\n"); printf("value is 0x%X\n", value); printf("*value is illegal!!\n"); printf("&value is 0x%p\n\n", &value); printf("ptr is 0x%p\n", ptr); printf("*ptr is 0x%X\n", *ptr); printf("&ptr is 0x%p\n\n", &ptr); ptr2 = &ptr; printf("Now, go crazy:\n\n"); printf("ptr2 = &ptr;\n\n"); printf("ptr2 is 0x%p\n", ptr2); printf("*ptr2 is 0x%p\n", *ptr2); printf("**ptr2 is 0x%X\n", **ptr2); printf("&ptr2 is 0x%p\n", &ptr2); return 0; }