Скажем, у меня есть указатель на пустоту (больше похоже на массив), и я хочу получить элементы внутри него. Итак, я знаю, что указатель [i] не будет работать, поскольку он недействителен, и я не знаю тип; Я попытался с помощью метода сдвига:C - Указатель и смещение Void
void function(void* p, int eltSize){
int offset = 3;
for(i = 0; i<offset; i++){
memcpy(p+(i*eltsize), otherPointer, eltSize);//OtherPointer has same type.
}
//End function
}
Эта функция работает хорошо и все, но единственная проблема в том, что в конце основной (..) Я получаю ошибку сегментации. Я знаю, что это из-за указателя и того, как я обращался к его элементам, но я не знаю, как исправить проблему и избежать ошибки сегментации.
Если вы не знаете, что это (тип) в местоположении адреса, вы не можете его использовать ... – Boiethios
'p + (I * eltsize)' это могло бы вообще не компилироваться. Компилятор не может выполнять арифметику указателей на указателях void. – fluter
@Morovaille, 'qsort' не знает тип и работает. –