#include <stdlib.h>
#include <stdio.h>
struct Vector
{
    double * const data;
    const size_t dim;
};
int
main(void)
{
    struct Vector x = {
        malloc(4 * sizeof(x.data)),     // allocate memory for 4 double
        4,                              // dim is hard coded to 4
    };
    // check if memory could be allocated
    if (!x.data) {
        fprintf(stderr, "allocating memoy for vector with %zu elemets failed\n",
                x.dim);
        exit(1);
    }
    
    // init vector elements
    for (size_t i = 0; i < x.dim; ++i) {
        x.data[i] = 42 + i;
    };
    // print vector elements
    for (size_t i = 0; i < x.dim; ++i) {
        printf("%lf", x.data[i]);
        if (i + 1 < x.dim) {
            printf(", ");
        }
    };
    printf("\n");
    // release memory
    free(x.data);
}