# Null

目录

  词语释义
  编程中的NULL
  1. 一.NULL字符
  2. 二.NULL指针
  3. 三.数据库中的NULL
  4. 四.NULL与0的疑惑
  5. 五.matlab中的函数
  其他解释
  展开

## 词语释义

1. 【形容词】零的;无效的;无价值的;空的.
2. 【名词】零;空;无.
3. 【及物动词】使无效.

## 编程中的NULL

### 一.NULL字符

在ASCII码的第一个字符是NULL,它的数值是0,占用1字节;C语言把它作为字符串的最后一个字符,以表示字符串到此结束."\0"

### 二.NULL指针

在C语言的头文件stddef.h中，NULL的定义如下：
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#interface NULL 0
可见，NULL指针是一个无类型指针，并且值为0。一个指针，拥有2个属性--地址值和指针类型。两者的作用是：1，地址值标识变量的首地址（32位系统下指针的地址值占4字节）；2，指针类型告诉编译器,应该怎样进行接下来的数据访问（int型数组和float型数组是不同的；数组访问与结构体访问也是不同的；等等）。
NULL的出现是一种约定俗成，事实上它不是C语言中的关键字；把一个指针赋值为NULL，通常的说法是“将指针悬空”。这样，指针就无法再进行任何数据访问了。编程工作中有一类比较容易犯的错误--指针地址未进行正确的更新赋值就加以使用，这往往会造成很严重的后果（对内存区进行错误的涂抹）。所以一个良好的习惯是，当一个指针的工作稍事休息，先把它赋值为NULL，待到再度使用时，重新对其赋值以及进行指针类型转化。
前面说到“NULL指针无法再进行任何数据访问”，其实是视编译器功能而定的。0位置指向的是程序起始，对于不同的编译器，NULL指针的操作结果是不同的：有些是不准读写，有些是只读，甚至读写都允许。编译器是人定的。引用网友win_hate在话题“关于NULL的不严谨”中的话来说：“如果说有谁不严谨了，那必定是读取0位置的程序员,而不是C。C的设计哲学之一是：‘程序员知道自己在干什么--没有安全带’”。

### 三.数据库中的NULL

Null在数据库中表示 不知道的数据，主要有3种意思：
1）知道数据存在，但不知道具体值.
2）不知道数据是否存在.
3）数据不存在.

### 四.NULL与0的疑惑

NULL与0有着扯不断理还乱的关系，其实不那么高深。0本身有着一些原生的特性诸如：起始，没有，正负的分界线，0/1中的0还可以表示否定。NULL正需要这些特性中的一部分。 我们只需要清楚NULL的本质，并在合理的地方才加以利用而非滥用。譬如我想做一个比较某个整数i是否为0，难道写成i==NULL会比i==0更酷一点吗？

### 五.matlab中的函数

函数null用来求解零空间，即满足方程组A*X=0的解空间。实际上是求出解空间的一组解（基础解系）。
语法：z=null（A） %z的列向量为方程组的正交规范基，满足z‘ x z=I。
z=null(A,'r') %z的列向量是方程A*X=0的有理基。

## 其他解释

在穿越火线游戏中，null为各种团队竞技类地图，null在每日任务中经常出现，也就是在团队竞技地图（（团队竞技地图包括运输船TD、金字塔TD等）中游戏N场或杀敌N人。

开放分类：
  百度 ， 英译汉 ， 符号常量