Top.Mail.Ru
Уведомления
Очистить все

Работа с указателями.

(@yuriy)
Level 2

Имеются массивы, условно:

float Mass[100][4] и

uint8_t Rx [200].

Требуется с нужного места массива Mass записать выборку байт из массива Rx. Параметры выборки: uint32_t b - начало, uint32_t c - длина выборки. "Нужное место" задаётся параметром uint32_t a, являющимся  номером байта в массиве Mass, условно представленного в виде одномерного массива (как расположены в памяти). При чём "a" может быть любым, не кратным количеству байт, определяемых форматом float (4). Подобные операции делал без проблем с помощью функции memcpy что-то типа:

memcpy(&Mass[k][f], &Rx[b], c);

В поставленной задаче надо делать как-то хитрее, если это вообще возможно. В указателях пока очень плохо разбираюсь. Если не трудно, покажите пожалуйста конкретный код решения этой хотелки.

Цитата
Создатель темы Размещено : 14.01.2025 00:02
Aveal
(@aveal)
Top level Admin
uint8_t* destPtr = (uint8_t*)Mass;
destPtr += a;

uint8_t* srcPtr = (uint8_t*)&Rx[b];

for (int i = 0; i < c; i++)
{
    *destPtr = *srcPtr;
    destPtr++;
    srcPtr++;
}
ОтветитьЦитата
Размещено : 14.01.2025 12:43
Поделиться: