Безразмерный массив в структуре - C (СИ)

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

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

Добрый вечер. Столкнулся с проблемой при написании безразмерного массива в структуре. Я понимаю, что так делать неправильно:
struct _name
{
int a[10];
int b[10];
int c[]; // безразмерный массив в структуре
};
. Однако, мне необходимо реализовать структуру с именно таким массивом данных. Зачем? Заранее у меня машина не знает, какой длины пакет она принимает. Она все равно должна его принять, и посчитать занятый объем памяти (например, используя sizeof()). Максимальный размер этого массива - 2000 байт. Я так понимаю, где-то не в структуре необходимо создать массив данных в 2000 байт, а в структуре указать на него. Но, тогда при вызове sizeof() у меня посчитаются все элементы массива, т.е. все 2000 байт, а не, например, нужные 500. Благодарю за внимание.

Решение задачи: «Безразмерный массив в структуре»

textual
Листинг программы
unsigned long *pUL = (unsigned long*)&pucBuf[i];
*pUL = HWREG(ulBase + MAC_O_DATA);

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

  1. В коде используется безразмерный массив pucBuf с индексом i.
  2. Переменная ulBase содержит базовый адрес регистра.
  3. Используется функция HWREG для чтения регистра по базовому адресу ulBase и смещению MAC_O_DATA.
  4. Результат чтения регистра сохраняется в переменной типа unsigned long с указателем pUL.

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


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

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

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