// Example demonstrating memory addess assignments // George F. Riley, Georgia Tech, Fall 2009 int g1; // Global variable 1 int g2; // Global variable 2 int sub1() { // First subroutine int s1l1; // Sub1, local variable 1 int s1l2; // Sub1, local variable 2 char* s1hello = "Hello"; printf("Address of s1l1 is %p\n", &s1l1); printf("Address of s1l2 is %p\n", &s1l2); printf("s1hello is %p\n", s1hello); } int sub2() { // Second subroutine int s2l1; // Sub1, local variable 1 int s2l2; // Sub1, local variable 2 char* s2hello = "Hello"; printf("Address of s2l1 is %p\n", &s2l1); printf("Address of s2l2 is %p\n", &s2l2); printf("s2hello is %p\n", s2hello); } int main(int argc, char** argv) { int ml1; // Main program, local variable 1 int ml2; // Main program, local variable 2 char* p1; char* p2; char* p3; printf("Address of g1 is %p\n", &g1); printf("Address of g2 is %p\n", &g2); printf("Address of ml1 is %p\n", &ml1); printf("Address of ml2 is %p\n", &ml2); printf("Address of sub1 is %p\n", sub1); printf("Address of sub2 is %p\n", sub2); sub1(); sub2(); sub3(); // Defined in ex1b.c // Get some dynamic memory p1 = (char*)malloc(1); p2 = (char*)malloc(1); p3 = (char*)malloc(1); printf("Dynamic mem 1 is %p\n", p1); printf("Dynamic mem 2 is %p\n", p2); printf("Dynamic mem 3 is %p\n", p3); }