// pointers.c // Author: Chris Wilcox // Date: 9/23/2014 // Class: CS270 // Email: wilcox@cs.colostate.edu // Include files #include #include #include int main(int argc, char *argv[]) { union { float f; int i; } either; float myFloat = 1.5f; int myInteger = 15; // Straightforward printing printf("myInteger (as integer)= %d\n", myInteger); printf("myFloat (as float) = %.2f\n", myFloat); // Type conversion printf("myInteger (as float) = %.2f\n", (float)myInteger); printf("myFloat (as integer) = %d\n", (int)myFloat); // Pointers printf("myInteger (int pointer) = %p\n", &myInteger); printf("myFloat (float pointer) = %p\n", &myFloat); printf("myInteger (deref int pointer)= %d\n", *(&myInteger)); printf("myFloat (deref float pointer) = %.2f\n", *(&myFloat)); // Hexadecimal value printf("myInteger (hex value) = %#x\n", myInteger); printf("myFloat (hex value) = %#x (bad!)\n", myFloat); // Pointer misdirection printf("myFloat (hex value) = %#x (good!)\n", *(int *)&myFloat); // Union method either.f = 1.5; printf("union (as float) = %.2f\n", either.f); printf("union (as integer) = %#x\n", either.i); either.i = 0x40000000; printf("union (as float) = %.2f\n", either.f); printf("union (as integer) = %#x\n", either.i); // static allocation for array int iArray[2] = {1234, 5678}; printf("iArray[0]: %d\n", iArray[0]); printf("iArray[1]: %d\n", iArray[1]); printf("&iArray[0]: %p\n", &iArray[0]); printf("&iArray[1]: %p\n", &iArray[1]); printf("iArray: %p\n", iArray); return 0; }