/* File: stack3.c Demonstrate that local variables are placed on a "stack" */ #include double func1 (void) ; double func2 (void) ; double func3 (void) ; double func1 (void) { double x, y, z ; printf("func1: Address of x = %u, of y = %u, of z = %u\n", &x, &y, &z) ; x = func2() ; return x ; } double func2 (void) { double x, y, z ; printf("func2: Address of x = %u, of y = %u, of z = %u\n", &x, &y, &z) ; x = func3() ; return x ; } double func3 (void) { double x, y, z ; printf("func3: Address of x = %u, of y = %u, of z = %u\n", &x, &y, &z) ; x = 17 ; return x ; } main() { double x, y, z ; printf("Size of double = %d\n\n", sizeof(double) ) ; printf("main: Address of x = %u, of y = %u, of z = %u\n", &x, &y, &z) ; x = func1() ; printf("\n") ; printf("main: Address of x = %u, of y = %u, of z = %u\n", &x, &y, &z) ; x = func2() ; printf("\n") ; printf("main: Address of x = %u, of y = %u, of z = %u\n", &x, &y, &z) ; x = func3() ; printf("\n") ; }