Обединение union для разных массивов - C (СИ)
Формулировка задачи:
Пожалуйста объясните, можно ли как то применить union в моем случае.
Сложилась проблема с нехваткой памяти данных МК PIC18F2525.
Ранее не приходилось пользоваться union. В статьях в интернете в union размещают просто переменные. А вот примеров с размещением массивов не нашел.
По сути программа разделена на две подпрограммы. В один момент времени может работать либо одна либо другая.
Одновременная работа невозможна. Данные из этих массивов хранить не нужно, при переключении между подпрограммами.
Но проблема в том, что нет одинаковых по количеству элементов массивов.
Подпрограмма 1:
Подпрограмма 2:
Можно ли задать так, чтобы с адреса 0x0100, при варианте работы "подпрограммы 1", память делилась на одни массивы; а при работе "подпрограммы 2", на другие массивы?
unsigned short a[254]; unsigned short b[127]; unsigned char c[127]; unsigned short d[127]; unsigned char e[127]; unsigned short f[127];
unsigned char w[64]; char x[20]; unsigned char q[170]; unsigned char z[161]; unsigned char y[512];
Решение задачи: «Обединение 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) для работы с разными массивами. Список действий:
- test.a.a[0];
В этом выражении происходит доступ к элементу массива
a
с индексом 0 в структуреtest.a
. Значение этого элемента будет использоваться в дальнейшем. - test.a.b[12];
Здесь также происходит доступ к элементу массива
b
с индексом 12 в структуреtest.a
. Значение этого элемента будет использоваться в дальнейшем. - test.a.f[50];
В этом выражении происходит доступ к элементу массива
f
с индексом 50 в структуреtest.a
. Значение этого элемента будет использоваться в дальнейшем. - test.b.w[12];
Здесь происходит доступ к элементу массива
w
с индексом 12 в структуреtest.b
. Значение этого элемента будет использоваться в дальнейшем. - test.b.q[43];
В этом выражении происходит доступ к элементу массива
q
с индексом 43 в структуреtest.b
. Значение этого элемента будет использоваться в дальнейшем. - test.b.z[35];
Здесь происходит доступ к элементу массива
z
с индексом 35 в структуреtest.b
. Значение этого элемента будет использоваться в дальнейшем. Обратите внимание, что в данном коде не указано, что делает программа с полученными значениями.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д