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

Вопросы программирования в системе Ардуино
Аватара пользователя
БлудныйКот
Сообщения: 41
Зарегистрирован: 29 дек 2016, 16:19

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

Сообщение БлудныйКот » 22 сен 2017, 18:43

Добрый вечер всем.

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

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


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

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


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


Эдуард
Администратор
Сообщения: 360
Зарегистрирован: 30 окт 2016, 20:53

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() {
}

Аватара пользователя
БлудныйКот
Сообщения: 41
Зарегистрирован: 29 дек 2016, 16:19

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

Сообщение БлудныйКот » 25 сен 2017, 10:09

Спасибо за ответ.


Вернуться в «Программирование Ардуино»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей