Я не понимаю, что вы подразумеваете под
copying to `void* buffer`
но если вы делаете следующее, то way1 правильный
int main()
{
int i;
char a[10];
void *buffer;
buffer = &a; // buffer is void* type pointer and its pointing to some buffer then
for(i = 0; i < 10; ++i)
{
uint8_t temp = 65;
//copy to void* buffer
*(uint8_t *)(buffer + i) = temp; //WAY #1
}
printf("\n %s",a);
}
БОЛЬШОЙ Редактировать:
IN WAY1
вы добавляете + i offcet с буфером void *, и все же весь результат становится пустым *, затем вы типизируете весь этот результат с помощью uint8_t *, затем получаете доступ к этому значению, чтобы оно работало
но в пути2 вы добавляете + i offcet с пустым пространством * буфер все равно весь результат равен void *, а затем вы получаете это значение ... , что совершенно неверно ..
Вы получите предупреждение / ошибку здесь
warning: dereferencing ‘void *’ pointer
Еще одно редактирование:
вы не можете разыменовать указатель void *, но вы можете выполнить арифметическую операцию со значением указателя (не его значением pointe)