У меня есть два вопроса о указателях void; мы имеем:Вопросы о указателях пустоты
void * foo=malloc(99)
void **bar=(void**)malloc(99);
int i=1;
bar++;
*bar = foo;
1.Это эквивалентно приведенному ниже?
bar[i++] = foo;
Если да, это неожиданное, потому что bar++;
перемещает двойной указатель вперед, а не единственный указатель, который отличается от не ничтожных типов.
2.Что это хорошо, чтобы вернуть void**
от void * foo();
?
Например:
void * foo(){
void ** bar;
return bar;
}
Но 'bar [i ++]' продвигает тип 'void *' и 'bar ++;' продвигает тип 'void **'. – shinzou
@kuhaku Нет, они этого не делают. 'bar [i ++]' обращается к 'bar' (' void ** ') в позиции' i' и увеличивает 'i'. 'bar ++' продвигает 'bar' одним элементом. –
«Указатель на какой-либо указатель на что-либо является указателем на что угодно» - было бы лучше сказать, что это указатель на * something * (только «void *» является указателем на * что-либо *). –