malloc can allocate enough heap storage for several elements.

Malloc Array

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

int main(void) {
    int count = ;
    int *values = (int *)malloc((size_t)count * sizeof(int));
    int sum = 0;

    if (values == 0) {
        return 1;
    }

    for (int i = 0; i < count; i++) {
        values[i] = i + 1;
        sum += values[i];
    }

    printf("sum=%d\n", sum);
    free(values);
    return 0;
}
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int count = ;
    int *values = (int *)malloc((size_t)count * sizeof(int));
    int sum = 0;

    if (values == 0) {
        return 1;
    }

    for (int i = 0; i < count; i++) {
        values[i] = i + 1;
        sum += values[i];
    }

    printf("sum=%d\n", sum);
    free(values);
    return 0;
}
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int count = ;
    int *values = (int *)malloc((size_t)count * sizeof(int));
    int sum = 0;

    if (values == 0) {
        return 1;
    }

    for (int i = 0; i < count; i++) {
        values[i] = i + 1;
        sum += values[i];
    }

    printf("sum=%d\n", sum);
    free(values);
    return 0;
}
element count The requested byte count is the number of elements times the size of one element.
heap array The returned pointer can be indexed like an array within the allocated range.