Как кэшировать часть данных в буфере / массиве и хранить все остальное в элементах структуры данных в C - PullRequest
1 голос
/ 05 марта 2020

Мой псевдокод выглядит примерно так в C. У меня есть некоторая часть данных, хранящихся в структуре данных, но я изо всех сил пытаюсь получить другой набор данных (на основе условия if) для хранения в отдельном массиве, который не является фиксированным размером. Любое предложение приветствуется.

typedef struct struct1 {
    uint32 member1
} PACKED struct1_t

typedef struct struct2 {
    struct1_t *member2
} PACKED struct2_t


uint32 curnt_cnt = 0;
for (i=0; i<some_number; i++){
    if (cond) {
        k = m;
        struct2_t->member2[curnt_cnt].member1 = k; #I have no prob writing here
    }
    else {
        k = n;
        array[curnt_cnt] = k;     ==> Is this even correct implementation?
        # I want to store/ book-keep the values of k in an array throughout every iteration of for loop without overwriting the previous value
        # Size of the array will not exceed "some_number (mentioned in for loop)" at any time     
    }
    curnt_cnt++;
} 

1 Ответ

2 голосов
/ 05 марта 2020

Вы должны создать указатель, поскольку списки в C должны иметь указанный c размер

int* arr;
arr = (int*)malloc(sizeof(int)*some_number);

, и тогда в вашем коде

else {
        k = n;
        array[curnt_cnt] = k;
    }

будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...