空指针NULL 与 void指针 要分清
来源:互联网 发布:vb select语句 编辑:程序博客网 时间:2024/06/05 19:31
空指针NULL
在C语言中,如果一个指针不指向任何数据,我们就称之为空指针,用NULL
表示。例如:int *p = NULL;
注意区分大小写,null 没有任何特殊含义,只是一个普通的标识符。NULL 是一个宏定义,在
stdio.h
被定义为:#define NULL ((void *)0)
(void *)0
表示把数值 0 强制转换为void *
类型,最外层的( )
把宏定义的内容括起来,我们自己进行宏定义时也推荐这么做,防止发生歧义。
总之,p 的值为 0。你可以输出 p 的值:
#include <stdio.h>
int main()
{
int *p = NULL;printf("%d\n", p);
return 0;
}
运行结果:
0
我们知道,变量一旦定义就要分配内存,指针变量也是如此。例如:
int *p; //它不是空指针它的值是随机的,是垃圾值,如果不小心使用了它,运行时一般会引起段错误,导致程序退出,甚至会不知不觉地修改数据.
p 经过定义,就一定在内存中分配了4个字节(32位环境)的空间,只是它的值是随机的,不像int
会被初始化为 0,但是它确实指向了一段正常使用的内存。使用 p 时,操作的就是这段内存的数据,幸运的话能够正常运行,不过大部分情况下这段内存是无权操作的。
下面的写法也是不专业的:
int *p = 0;而应该坚持写为:
int *p = NULL;
void 指针
C语言还有一种void
指针类型,即可以定义一个指针变量,但不说明它指向哪一种类型数据。例如:void *p = malloc(2);在内存中分配2个字节的空间,但不确定它保存什么类型的数据。
注意,void 指针与空指针 NULL 不同:NULL 说明指针不指向任何数据,是“空的”;而 void 指针实实在在地指向一块内存,只是不知道这块内存中是什么类型的数据。
阅读全文
0 0
- 空指针NULL 与 void指针 要分清
- void * 与 空指针NULL
- Void与NULL指针
- void指针与NULL指针
- 空指针与void *指针
- 空指针(NULL,0),野指针,void*
- 空指针、void指针与函数指针
- NULL指针与空指针
- C++ void指针与NULL指针
- C++ void指针与NULL指针
- 空指针与void指针的区别
- void类型指针与空指针
- 空指针(NULL,0),野指针,void*的讲解
- C语言空指针NULL以及void指针
- 99 C语言空指针NULL以及void指针
- C语言空指针NULL以及void指针
- C/C++拾遗————空指针{NULL/0/(void*)0}与 空字符{null/'0'} 区别
- 指针、空指针、指针值、void*指针
- RE模块
- Tomcat出现 java.net.ConnectException: Connection refused 异常的原因及解决方法
- 如何保证HDFS中的数据一致性?
- android studio layout文件白屏问题
- 关于android studio rename module 那点坑
- 空指针NULL 与 void指针 要分清
- 用空格缩进的程序员赚钱更多吗?
- Spark调优之Tuning Spark(Part 1)
- 如何对innerHTML获得的内容转义
- Unity3d代码获取隐藏物体
- python简单学习:类、类与对象、继承、读取文件
- BT下载原理简介
- Activity生命周期启动方式及启动模式
- 大数加法