在写入数据的时候,空字符串'' 也是一个确定的值,所以就算你定义了 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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)