Инициализация массива структур - 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, завершая работу программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д