Безразмерный массив в структуре - C (СИ)
Формулировка задачи:
Добрый вечер.
Столкнулся с проблемой при написании безразмерного массива в структуре. Я понимаю, что так делать неправильно:
.
Однако, мне необходимо реализовать структуру с именно таким массивом данных. Зачем?
Заранее у меня машина не знает, какой длины пакет она принимает. Она все равно должна его принять, и посчитать занятый объем памяти (например, используя sizeof()). Максимальный размер этого массива - 2000 байт.
Я так понимаю, где-то не в структуре необходимо создать массив данных в 2000 байт, а в структуре указать на него. Но, тогда при вызове sizeof() у меня посчитаются все элементы массива, т.е. все 2000 байт, а не, например, нужные 500.
Благодарю за внимание.
struct _name { int a[10]; int b[10]; int c[]; // безразмерный массив в структуре };
Решение задачи: «Безразмерный массив в структуре»
textual
Листинг программы
unsigned long *pUL = (unsigned long*)&pucBuf[i]; *pUL = HWREG(ulBase + MAC_O_DATA);
Объяснение кода листинга программы
- В коде используется безразмерный массив
pucBuf
с индексомi
. - Переменная
ulBase
содержит базовый адрес регистра. - Используется функция
HWREG
для чтения регистра по базовому адресуulBase
и смещениюMAC_O_DATA
. - Результат чтения регистра сохраняется в переменной типа
unsigned long
с указателемpUL
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д