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);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进