在C中,void类型只能定义指针,不能定义变量。
void *p; // void p; //错误
void 指针一般在函数中使用,可实现泛型接口。
当用void指针只想一处内存时,运用应该仔细。
#include <stdio.h> #include <stdlib.h> void main() { int a=100000; char c = 'a'; void * p; p=&c; printf("%d\n",sizeof(p)); //8 64位 printf("%d\n",sizeof(*p)); //1 printf("%d\n",sizeof(*(char*)p)); //1 printf("%d\n",sizeof(*(int*)p)); //4 printf("%c\n",*((char*)p)); //a // printf("%c\n",*p); //错误 }
void 的指针占8位字节,但是指针的值却是1位,且不能直接输出(invalid use of void expression)
想要使用void指针需要强制转换成想要的类型。
当要改变void指针的值时,不能直接赋值,可采用memset设置其内容。
//*p = 'q'; //错误 memset(p,'q',1);