void是无类型的意思
void是通用指针,
#include <stdio.h> int main () { int num=1024; int *pi=# char *ps="FishC"; void *pv; pv=pi; printf("pi:%p,pv:%p\n",pi,pv); pv=ps; printf("ps:%p,pv:%p\n",ps,pv); return 0; }
结果
pi:000000000061FE04,pv:000000000061FE04
ps:0000000000404000,pv:0000000000404000
可以发现地址一样
如果用上述打印字符串,不用写*,
如果要打印,就要这样写
#include <stdio.h> int main () { int num=1024; int *pi=# char *ps="FishC"; void *pv; pv=pi; printf("pi:%p,pv:%p\n",pi,pv); printf("*pv:%d\n",*(int *)pv); pv=ps; printf("ps:%p,pv:%p\n",ps,pv); printf("*pv:%s\n",(char *)pv); return 0; }
结果
pi:000000000061FE04,pv:000000000061FE04
*pv:1024
ps:0000000000404000,pv:0000000000404000
*pv:FishC
用void指针时要好好检查
在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。
NULL 指针是一个定义在标准库中的值为零的常量。
#include <stdio.h> int main () { int *p1; int *p2=NULL; printf("%d\n",*p1); printf("%d\n",*p2); return 0; }
结果
7476081
报错,因为对NULL指针解引用是非法的,在c语言中
NULL不是NUL