Инициализация массива структур - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Подскажите как инициализировать целый массив со структурами. Вот пример инициализации структуры. Тут вроде понятно.
struct gasket {
    float weight;
    unsigned height;
    unsigned diameter;
};
 
 struct gasket obj = { 12.f, 120, 30 };
Мне нужно целый массив и сразу вписать значения.
struct EffectFeature {
 enum Direction Dir;
 uint32_t Start;
 uint32_t End;
 uint32_t FrameRate;
};
 
 struct EffectFeature Effects[2]; // Этот массив нужно инициализировать сразу, сделать const и вообще записать на flash.
Я пишу программку для микроконтроллера stm32 в keil uvision 5. Есть надежда что я смогу дописать ключевое слово const или другую приблуду и эта информация окажется в памяти программ (flash). Эти данные не будут изменяться и хочется разместить их в flash.

Решение задачи: «Инициализация массива структур»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
 
enum Direction
{
    ONE,
    TWO
};
 
struct EffectFeature{
 enum Direction Dir;
 uint32_t Start;
 uint32_t End;
 uint32_t FrameRate;
}const effect[2] = {{ONE,0,10,30},{TWO,10,20,50}};
 
void Print(const struct EffectFeature* my_struct)
{
    printf("Direction:%d\n",my_struct->Dir);
    printf("Start:%u\n",my_struct->Start);
    printf("End:%u\n",my_struct->End);
    printf("FrameRate:%u\n\n",my_struct->FrameRate);
}
 
int main()
{
    Print(&effect[0]);
    Print(&effect[1]);
    return 0;
}

Объяснение кода листинга программы

  1. Подключаются необходимые заголовочные файлы
  2. Определяется перечисление Direction
  3. Определяется структура EffectFeature, содержащая перечисление Dir, типы данных uint32_t для Start, End и FrameRate
  4. Определяется массив структур effect, инициализированный значениями, соответствующими перечтению Direction
  5. Определяется функция Print, принимающая указатель на структуру EffectFeature и выводящая значения полей структуры
  6. В функции main создается и инициализируется указатель на первый элемент массива effect
  7. Вызывается функция Print с указателем на первый элемент массива effect
  8. Создается и инициализируется указатель на второй элемент массива effect
  9. Вызывается функция Print с указателем на второй элемент массива effect
  10. Функция main возвращает 0, завершая работу программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.364 из 5
Похожие ответы