Здравствуйте!
Как-то давно я нашел в интернете объемную статью от ЕвгенийП об указателях.
Ссылки, к сожалению нет, но есть конспект этой статьи.
Там написано лучше, чем в учебнике.
И вот сегодня я задался целью скопировать одну область памяти, привязанную к имени переменной, в другую область памяти.
С этой целью я разработал подпрограмму peregon.
Контрольные примеры проходят.
Вот что получилось.
Есть ли здесь “подводные камни”?
Спасибо!
void setup()
{
float istok1 = 3.1415;
float priem1;
int istok2 = 12345;
int priem2;
peregon(&istok1, &priem1, 4); // istok1 копируется в priem1 (float)
peregon(&istok2, &priem2, 2); // istok2 копируется в priem2 (int)
Serial.begin(9600);
Serial.println(String(priem1,4));
Serial.println(priem2);
}
void loop()
{
}
void peregon(void *x, void *y, int z)
{
byte* ptr1 = x;
byte* ptr2 = y;
for (int i = 0; i <= z - 1; i++)
{
*(ptr2 + i) = *(ptr1 + i);
}
}
Вам это надо для упражнения или для дела? Если первое, то, конечно, упражняйтесь на здоровье, а если для дела, то, простите, чем Вас не устраивает системная функция
Зачем писать свою функцию, когда есть системная, которая делает то же самое, но делает это лучше (например, не забывает вызыватьeeprom_busy_wait()перед каждой операцией, чего Вы не делаете принципиально)?