gcc报错,invalid use of void expression

void *foo(void *a)
{
        a = (int *)a;
        (*a)++;
        printf( "a = %d\n", *a);
}

程序是这样的,总是说第二行和第三行有错误!

阅读 9.6k
2 个回答

a 是 void*,不能解引用。此外 a = (int *)a; 这句毫无意义,你把 a 转成 int*,再赋值给 a,又变成 void *

C语言是静态类型的语言,当你指定了void *a后,a在其有效域内就一直是void *类型无法改变了。想用int *的时候,只要用一个新变量就好了。比如:

void *foo(void *a)
{
        int *b = (int *)a;
        (*b)++;
        printf("a = %d\n", *b);
}