Инициализация массива структур - C (СИ)
Формулировка задачи:
Подскажите как инициализировать целый массив со структурами.
Вот пример инициализации структуры. Тут вроде понятно.
Мне нужно целый массив и сразу вписать значения.
Я пишу программку для микроконтроллера stm32 в keil uvision 5.
Есть надежда что я смогу дописать ключевое слово const или другую приблуду и эта информация окажется в памяти программ (flash). Эти данные не будут изменяться и хочется разместить их в flash.
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.
Решение задачи: «Инициализация массива структур»
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; }
Объяснение кода листинга программы
- Подключаются необходимые заголовочные файлы
- Определяется перечисление Direction
- Определяется структура EffectFeature, содержащая перечисление Dir, типы данных uint32_t для Start, End и FrameRate
- Определяется массив структур effect, инициализированный значениями, соответствующими перечтению Direction
- Определяется функция Print, принимающая указатель на структуру EffectFeature и выводящая значения полей структуры
- В функции main создается и инициализируется указатель на первый элемент массива effect
- Вызывается функция Print с указателем на первый элемент массива effect
- Создается и инициализируется указатель на второй элемент массива effect
- Вызывается функция Print с указателем на второй элемент массива effect
- Функция main возвращает 0, завершая работу программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д