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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>
  4.  
  5. enum Direction
  6. {
  7.     ONE,
  8.     TWO
  9. };
  10.  
  11. struct EffectFeature{
  12.  enum Direction Dir;
  13.  uint32_t Start;
  14.  uint32_t End;
  15.  uint32_t FrameRate;
  16. }const effect[2] = {{ONE,0,10,30},{TWO,10,20,50}};
  17.  
  18. void Print(const struct EffectFeature* my_struct)
  19. {
  20.     printf("Direction:%d\n",my_struct->Dir);
  21.     printf("Start:%u\n",my_struct->Start);
  22.     printf("End:%u\n",my_struct->End);
  23.     printf("FrameRate:%u\n\n",my_struct->FrameRate);
  24. }
  25.  
  26. int main()
  27. {
  28.     Print(&effect[0]);
  29.     Print(&effect[1]);
  30.     return 0;
  31. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы