如果有 void *a;
这样的声明,那么不能通过 *a
进行取值操作。
void *
是C语言中的通用指针类型,可以存储任意类型的指针。然而,由于 void
类型本身是无类型的,编译器无法确定它具体指向的是什么类型的数据。因此,在使用 void *
进行指针运算或解引用操作时,是不被允许的。
如果需要对 void *
类型的指针进行解引用操作,必须先将其转换为特定类型的指针,以告知编译器需要操作的数据类型。例如:
void *a;
int *intPtr = (int *)a;
在这个示例中,将 void *
类型的指针 a
转换为指向 int
类型的指针 intPtr
,然后可以通过 *intPtr
来解引用获取所指向的 int
类型的值。