Обединение union для разных массивов - C (СИ)

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

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

Пожалуйста объясните, можно ли как то применить union в моем случае. Сложилась проблема с нехваткой памяти данных МК PIC18F2525. Ранее не приходилось пользоваться union. В статьях в интернете в union размещают просто переменные. А вот примеров с размещением массивов не нашел. По сути программа разделена на две подпрограммы. В один момент времени может работать либо одна либо другая. Одновременная работа невозможна. Данные из этих массивов хранить не нужно, при переключении между подпрограммами. Но проблема в том, что нет одинаковых по количеству элементов массивов. Подпрограмма 1:
unsigned short a[254];
unsigned short b[127];
unsigned char c[127];
unsigned short d[127];
unsigned char e[127];
unsigned short f[127];
Подпрограмма 2:
unsigned char w[64];
char x[20];
unsigned char q[170];
unsigned char z[161];
unsigned char y[512];
Можно ли задать так, чтобы с адреса 0x0100, при варианте работы "подпрограммы 1", память делилась на одни массивы; а при работе "подпрограммы 2", на другие массивы?

Решение задачи: «Обединение union для разных массивов»

textual
Листинг программы
test.a.a[0];
 
test.a.b[12];
 
test.a.f[50];
 
 
test.b.w[12];
 
test.b.q[43];
 
test.b.z[35];

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

В представленном коде используется объединение (union) для работы с разными массивами. Список действий:

  1. test.a.a[0]; В этом выражении происходит доступ к элементу массива a с индексом 0 в структуре test.a. Значение этого элемента будет использоваться в дальнейшем.
  2. test.a.b[12]; Здесь также происходит доступ к элементу массива b с индексом 12 в структуре test.a. Значение этого элемента будет использоваться в дальнейшем.
  3. test.a.f[50]; В этом выражении происходит доступ к элементу массива f с индексом 50 в структуре test.a. Значение этого элемента будет использоваться в дальнейшем.
  4. test.b.w[12]; Здесь происходит доступ к элементу массива w с индексом 12 в структуре test.b. Значение этого элемента будет использоваться в дальнейшем.
  5. test.b.q[43]; В этом выражении происходит доступ к элементу массива q с индексом 43 в структуре test.b. Значение этого элемента будет использоваться в дальнейшем.
  6. test.b.z[35]; Здесь происходит доступ к элементу массива z с индексом 35 в структуре test.b. Значение этого элемента будет использоваться в дальнейшем. Обратите внимание, что в данном коде не указано, что делает программа с полученными значениями.

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


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

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

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