2023-10-21
Dynamic array in C:
#include <stdio.h> #include <stdlib.h> int main (void) { // // Allocate with 5 elements // printf ("Allocating 5 elements ...\n"); int *p = malloc (5 * sizeof (int)); if (p == NULL) { printf ("Could not allocate.\n"); return 1; } for (int i = 0; i < 5; ++i) { *(p + i) = i * 10; } for (int i = 0; i < 5; ++i) { printf ("p[%d] = %d\n", i, p[i]); } // // Reallocate with 10 elements // printf ("Reallocating 10 elements ...\n"); p = realloc (p, 10 * sizeof (int)); if (p == NULL) { printf ("Could not reallocate.\n"); return 1; } for (int i = 0; i < 10; ++i) { *(p + i) = i * 100; } for (int i = 0; i < 10; ++i) { printf ("p[%d] = %d\n", i, p[i]); } // // Reallocate with 7 elements // printf ("Reallocating 7 elements ...\n"); p = realloc (p, 7 * sizeof (int)); if (p == NULL) { printf ("Could not reallocate.\n"); return 1; } for (int i = 0; i < 7; ++i) { *(p + i) = i; } for (int i = 0; i < 7; ++i) { printf ("p[%d] = %d\n", i, p[i]); } // // Free // if (p != NULL) { free (p); } return 0; }
Compile with:
cc main.c
Execute program with:
./a.out
Output:
Allocating 5 elements ... p[0] = 0 p[1] = 10 p[2] = 20 p[3] = 30 p[4] = 40 Reallocating 10 elements ... p[0] = 0 p[1] = 100 p[2] = 200 p[3] = 300 p[4] = 400 p[5] = 500 p[6] = 600 p[7] = 700 p[8] = 800 p[9] = 900 Reallocating 7 elements ... p[0] = 0 p[1] = 1 p[2] = 2 p[3] = 3 p[4] = 4 p[5] = 5 p[6] = 6