#include <stdio.h> #include <stdlib.h> int nums_global[5] = {23, 24, 25, 26, 27}; int main(int argc, char * argv[]) { int nums_local[5] = {23, 24, 25, 26, 27}; /*int howMany; printf("How many numbers? "); scanf("%d", &howMany); int *nums2 = (int *) malloc(sizeof(int) * howMany); int nums2[howMany]; // you can do this, but nums2 is on the stack (local memory). the stack is small. */ int *nums_dynamic = (int *) malloc(sizeof(int) * 5); nums_dynamic[0] = 23; nums_dynamic[1] = 24; nums_dynamic[2] = 25; nums_dynamic[3] = 26; nums_dynamic[4] = 27; printf("local/stack - %p\n", &(nums_local[0])); int x; printf("local/stack - %p\n", &x); printf("dynamic/heap - %p\n", &(nums_dynamic[0])); *num_dynamic = 30; printf("local/stack - %p\n", &nums_dynamic); printf("global/data - %p\n", &(nums_global[0])); printf("main/code - %p\n", main); return 0; }