У меня есть funciton, который возвращает указатель на пустоту. Допустим, я знаю, что блок данных, на которые указывает, представляет собой массив ints. Как я могу напечатать их?Печать значений указателя void
С другой нити я видел, что я бросил пустоту, как мой желаемый тип данных таким образом:
printf("%i",*((int*)data));
Но, как я сказал, что данные представляют собой массив целых чисел. Я пытался это сделать, но это не является допустимым выражением:
for(i = 0; i<3; i++){
printf("%i \n", *((int*)(data+sizeof(int)*i)));
}
Что такое правильный способ печати это?
'int * ptr = void_pointer;', а затем просто используйте 'ptr'. (Вы также можете написать '* ((int *) data + i)', но наличие 'int *' для использования менее подвержено ошибкам.) –
Кстати, '* ((int *) data + i) 'отлично и правильно (хотя и не совсем читаемо). –
@ H2CO3 Более читаемый, чем '* (int *) ((char *) data + i * sizeof (int))', не так ли? ;) –