Страница 1 из 1

Как правильно добавить смещение к указателю в Си

Добавлено: 22 сен 2017, 18:43
БлудныйКот
Добрый вечер всем.

Прогал на ардуино. И опять борюсь с указателями.

Есть указатель на массив MainMsgInfo.ptrSamples. Подскажите как мне передать этот указатель вместе со смещением на InSamplesCounter байтов. Чтобы всё это работало с функцией memcpy.


Код: Выделить всё

memcpy ( &AppData[InSegmentCounter], (MainMsgInfo.ptrSamples + InSamplesCounter), FreeBytes);


Заранее благодарен за ответ.

Re: Как правильно добавить смещение к указателю в Си

Добавлено: 22 сен 2017, 19:26
Эдуард
Здравствуйте!
Первые два аргумента функции memcpy() это просто имена массивов. Имя массива является указателем на его первый элемент.
Вот пример, в котором копируем 4 байта начиная с 3го элемента массива appDataCounter в массив samples начиная со 2го байта

Код: Выделить всё

#include <string.h >

byte  appData[10];  // массив приемник
byte  samples[10];  // массив источник

int appDataCounter=3; // смещение приемника
int samplesCounter=2; // смещение источника

void setup() {
memcpy (appData + appDataCounter, samples + samplesCounter, 4); // копируем 4 байта начиная с 3го элемента массива appDataCounter в массив samples начиная со 2го байта
}

void loop() {
}

Re: Как правильно добавить смещение к указателю в Си

Добавлено: 25 сен 2017, 10:09
БлудныйКот
Спасибо за ответ.