вернуть uint8_t из функции и распечатать его в основной функции

у меня есть следующая функция

    uint8_t func(){
        uint8_t key[16] = {0};
        // some operations
        return key;
     }

я вызываю эту функцию в основной функции

int main(void){
    uint8_t rcKey[16] = func();
    for (int i = 0; i < 16; i++)
    {
        printf("%x ", rcKey[i]);
    }

}

что я здесь неправильно делаю? Я получаю неверную ошибку инициализатора

# arrays uint8t
Источник
  • 0
    Во-первых, key - это не uint8_t , это массив из 16 элементов uint8_t
  • 0
    Вы должны прочитать это: denniskubes.com/2012/08/20/is-c-pass-by-value-or-reference
  • 0
    Спасибо за ссылку :) Помогло
Codelisting
за 1 против
Лучший ответ

Массив не может быть инициализирован напрямую через вызов функции. Вы можете инициализировать отдельные элементы только как часть списка инициализаторов.

Вместо этого вы можете передать массив функции для установки соответствующих значений.

void func(uint8_t key[]){
    // some operations
 }

int main(void){
    uint8_t rcKey[16]
    func(rcKey);
    for (int i = 0; i < 16; i++)
    {
        printf("%x ", rcKey[i]);
    }

}
Codelisting
Популярные категории
На заметку программисту