void *foo(void *a)
{
a = (int *)a;
(*a)++;
printf( "a = %d\n", *a);
}
程序是这样的,总是说第二行和第三行有错误!
void *foo(void *a)
{
a = (int *)a;
(*a)++;
printf( "a = %d\n", *a);
}
程序是这样的,总是说第二行和第三行有错误!
C语言是静态类型的语言,当你指定了void *a
后,a在其有效域内就一直是void *
类型无法改变了。想用int *
的时候,只要用一个新变量就好了。比如:
void *foo(void *a)
{
int *b = (int *)a;
(*b)++;
printf("a = %d\n", *b);
}
a 是 void*,不能解引用。此外
a = (int *)a;
这句毫无意义,你把 a 转成int*
,再赋值给 a,又变成void *
啦