马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Kotori 于 2017-7-30 15:19 编辑
void指针和NULL指针
1>void指针
void字面意思为‘虚空’,这是一种特殊的指针,也称为通用指针。即可指向任意类型的数据。int a = 1;
void *p;
p = &a;
printf("%d",*(int *)p); //这里对类型进行强制转换
注意:1)不存在void类型的变量,只有指针,定义void类型的变量会报错;
2)建议在解引用void指针指向的内容时加上强制转换,以更好地知道编程的意图;
3)void指针在执行自增代码时,只是单纯移向下一个地址(即地址+1),并不会识别出数据类型进行合适的偏移!!!
2>NULL指针
在C语言定义指向0的指针为空指针,代码如下:#define NULL ((void *) 0)
空指针的出现解决了悬空指针(未被初始化的指针)的问题。当指针被定义时,如果没对其进行初始化,指针就会指向一个随机的地址。这对安全问题造成了一定的影响。 通过在初始化时,把暂时用不到的指针指向NULL,就可以避免这类问题,同时减少可能出现的未知错误。
注意:1)未被初始化使用的指针先指向NULL;
2)在解引用时先检查指针是否指向NULL,因为解引用NULL指针会报错。 |