/* StackExploration.c (c) Kari Laitinen http://www.naturalprogramming.com/ 2013-11-27 File created. 2013-11-27 Last modification. */ #include void function_xx() { int array_xx[] = { 0x1111, 0x2222 } ; int sum_xx = array_xx[ 0 ] + array_xx[ 1 ] ; printf( "\n sum_xx is in address %X", &sum_xx ) ; int memory_positions_printed = 0 ; int* memory_pointer = &sum_xx ; while ( memory_positions_printed < 16 ) { printf( "\n Memory address %X contains %X", memory_pointer, *memory_pointer ) ; memory_pointer ++ ; memory_positions_printed ++ ; } } void function_yy() { int array_yy[] = { 0x3333, 0x4444 } ; int sum_yy = array_yy[ 0 ] + array_yy[ 1 ] ; printf( "\n sum_yy is in address %X", &sum_yy ) ; function_xx() ; } void function_zz() { int array_zz[] = { 0x5555, 0x6666 } ; int sum_zz = array_zz[ 0 ] + array_zz[ 1 ] ; printf( "\n sum_zz is in address %X", &sum_zz ) ; function_yy() ; } int main() { printf( "\n function_xx starts in address %X" "\n function_yy starts in address %X" "\n function_zz starts in address %X", function_xx, function_yy, function_zz ) ; function_zz() ; } /* Here is a possible output generated by this program: function_xx starts in address 401290 function_yy starts in address 4012FE function_zz starts in address 401335 sum_zz is in address 22FF0C sum_yy is in address 22FEEC sum_xx is in address 22FECC Memory address 22FECC contains 3333 Memory address 22FED0 contains 1111 Memory address 22FED4 contains 2222 Memory address 22FED8 contains 22FEF8 Memory address 22FEDC contains 401333 Memory address 22FEE0 contains 40303C Memory address 22FEE4 contains 22FEEC Memory address 22FEE8 contains 22FFC4 Memory address 22FEEC contains 7777 Memory address 22FEF0 contains 3333 Memory address 22FEF4 contains 4444 Memory address 22FEF8 contains 22FF18 Memory address 22FEFC contains 40136A Memory address 22FF00 contains 403056 Memory address 22FF04 contains 22FF0C Memory address 22FF08 contains 22FFC4 */