Qubc
@Qubc
Ненавижу полисемию.

Почему void ** можно инициализировать только void *?

Указатель void * может быть инициализирован любым указателем или адресом любого указателя.
Почему же нет такой типовой свободы указателей на указатель assignment from incompatible pointer type указателя на указатель?

#include <stdio.h>
int main ( void )
{
	int * Ptri;
	float * Ptrf;
	void * Ptrv;
	int * * PtrPtri;
	float * * PtrPtrf;
	void * * PtrPtrv;
	
	Ptrv = Ptri;
	Ptrv = Ptrf;
	Ptrv = &Ptri;
	Ptrv = &Ptrf;
	Ptrv = PtrPtri;
	Ptrv = &PtrPtri;

	PtrPtri = &Ptri;
!!PtrPtri = Ptri;
	PtrPtrf = &Ptrf;
!!PtrPtrf = Ptrf;

	PtrPtrv = &Ptrv;
!!PtrPtrv = &Ptri;
!!PtrPtrv = &Ptrf;
}
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
К.О.: Потому что void* — это не void. Первый — это вполне конкретный тип, второй — «псевдотип», используемый в двух контекстах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы