nul和null有什么区别

nul和null有什么区别,第1张

空 (NULL) 值表示数值未知。空值不同于空白或零值。没有两个相等的空值。比较两个空值或将空值与任何其它数值相比均返回未知,这是因为每个空值均为未知。

在写入数据的时候,空字符串'' 也是一个确定的值,所以就算你定义了 NOT NULL 也可以被写入。

计算机,数据库中,'' 和null区别为:性质不同、占用空间不同、拼接组合不同。

一、性质不同

1、'':''是空字符串,是一个已经实例化的数据对象。

2、null:null是空值,不是一个实例化的数据对象。

二、占用空间不同

1、'':''分配了空间,占用1个字节长度的空间。

2、null:null没有分配空间,占用0个字节长度的空间。

三、拼接组合不同

1、'':''可以和其他同数据类型的数据对象进行拼接组合。

2、null:null不可以和其他同数据类型的数据对象进行拼接组合。

nul 和 null要看编译器,不同的编译器有所区别。

一般而言 null(NULL)是宏定义 #define NULL ((void *)0),是一个指向地址0的指针,也就是说它是一个值为0的指针类型的数,这个宏是在头文件stddef.h文件里面定义的,你可以用#include <stddef.h>或者#include <stdlib.h>来使用它;

nul(NUL)一般而言是指ASC码'\0'字符,十六进制值为0x00,这个在C语言的头文件里面没有被定义,你可以自己定义它 #define NUL '\0',一个字符串的最后一个字符就是’\0'(隐含的);

举例:

#include <stdio.h>

#include <stdlib.h>

#define NUL '\0'

int *ptr = NULL

char ch = NUL

eof是文件结束符,值为-1,你可以从头文件stdio.h里面找到它的定义 #define EOF (-1),表示文件结束或者流结束;

\r和\n都是一个字符,分别表示回车和换行,在ASC码里值分别为0x0D、0x0A,windows中文本一行的结尾都是有两个字符\r\n,但是在unix、linux里面只有一个字符\n,Mac里面则是只有字符\r,但是你是用printf("\r")或printf("\n")大部分程序(某些控制台程序除外)都是没有太大区别的。

至于字符为什么写成\加上0、r和n等,是因为在C语言中表示字符或字符串时遇到\(转义字符)则不会把下一个字符识别为普通字符,比如说'\n',表示ASC码0x0A,而不是值为0x6E的字母n。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9716863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存