在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);

被折叠的 条评论
为什么被折叠?



