#include <stdio.h>
#include <stdlib.h>

int main(void) {

    int var1;
    var1 = 10;
    printf("var1 with direct assignment: %d\n", var1);

    int* ptr1;
    ptr1 = &var1;
    *ptr1 = 20;
    printf("var1 changed using ptr1: %d\n", *ptr1);

    ptr1 = (int*)(malloc(sizeof(int)));
    *ptr1 = 30;
    printf("dynamic memory changed using ptr1: %d\n", *ptr1);

    int* myArray = NULL;
    myArray = (int*)(malloc(sizeof(int) * 5));
    for (int i = 0; i < 5; ++i) {
        myArray[i] = i + 1;
        printf("myArray[%d] is: %d\n", i, myArray[i]);
    }

    myArray = (int*)(realloc(myArray, 10 * sizeof(int)));
    for (int i = 0; i < 10; ++i) {
        myArray[i] = i + 1;
        printf("myArray[%d] is: %d\n", i, myArray[i]);
    }

    free(myArray);

    return 0;

}