ошибка компилятора в программе c: косвенное указание на тип void * - PullRequest
2 голосов
/ 29 января 2010
void main()
{
void *v;
int integer=2;
int *i=&integer;
v=i;
printf("%d",(int*)*v);
}

эта простая программа приведет к ошибке компилятора:

Compiler Error. We cannot apply indirection on type void*

что именно означает эта ошибка?

Ответы [ 3 ]

3 голосов
/ 29 января 2010

Ошибка означает именно то, что говорит. Ошибка вызывается подвыражением *v, используемым в вашем коде.

Унарный оператор * в C часто называют косвенным оператором оператором или разыменованием оператором. В этом случае компилятор говорит вам, что нельзя применять унарный * к указателю типа void *.

3 голосов
/ 29 января 2010

Вы не можете разыменовать указатели на void (т.е. void *). Они указывают на область памяти, содержащую неизвестные данные, поэтому компилятор не знает, как получить доступ / изменить эту память.

1 голос
/ 29 января 2010

Изменение:

printf("%d",(int*)*v);

на это:

printf("%d",*(int*)v);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...