что хранится в переменной ))) или копирование структур
- Войдите на сайт для отправки комментариев
Ср, 22/04/2015 - 16:39
Всем привет
есть массив где каждый елемент это структура
struct S_leditem
{
byte ledmaskcount;
byte ledmask[10];
int time;
};
struct S_leds
{
byte scriptcount;
byte startscript;
S_leditem leditem[10];
} leds;
S_leditem currentleditem;
что будет в переменной currentleditem после выполнения строки
currentleditem=leds.leditem[n];
отдельный экземпляр leds.leditem[n] или обе переменных будут указывать на одно и тоже адресное пространство
к сожалению среда разработки мне сечас не доступна , сори за возможные косяки в коде .
Для компилятора оператор
currentleditem=leds.leditem[n];
равносилен
memcpy(currentleditem,leds.leditem[n],sizeof(currentleditem));
Там будет КОПИЯ.
Другой вариант - использовать указатели.
в этом случае копии не будет, будет указатель на структуру S_leditem. Думаю Вы понимаете, что копия - это лишнее время на копирование, а самое главное - лишнее место в памяти.
Разумеется указатель - это всегда риск, что он может иметь значение NULL (кстати, всегда при описании инициализируйте указатель значением nullptr или NULL, либо указателем на структуру). В остальном использовать его не сложно.
В моем случае нужна копия
так как currentleditem дан на растерзание пользователю при этом нужна возможность отката к предустановкам
-------------------
респект за быстрые и исчерпыващие ответы