空字符 空格字符(字符) 空字符串 NULL的区别
【1】 空字符 空格字符(字符)【2】空字符串 【3】 NULL的区别
1.1 字符
(1)首先必须明确字符型(char)是整数类型,其在内存单元是以整数形式存放。
(2)其次,char类型的产生是为了用于:存储字母、数字、标点字符、非打印字符。
(3) 为方便处理字符,用特定的整数表示特定字符,即我们看到的编码。实质上就是一种转化代替的思想,用这种编码从而去描述字符,最常用的是ASCII码。
1.1.1 空字符 空格字符
空字符: 字符串结尾的标志(‘\0’),实际上他的数值是0。 可以理解为标志性字符型,其使命主要是为了表明字符串已经结束。
空格字符: 空格字符( ‘’单引号中间有一个空格)的ASCII码10进制32,16进制的0X20
两者区别:
最直观的区别:值不同两者的ASCII不同,空(NUL)字符码值是0,而空格字符的码值是32。再者,空字符人为规定了它的使命。
附:‘0’ 的ASCII是48,不要跟前面两个混为一团。3者是完全不同的概念,其本身的整型值不同,代表的字符也不同。
1.2 字符串
字符串:字符串属于字符类型的派生类型(char数组)。用于字符串一定要以空字符(‘\0’)结束,故所有的字符串里面一定有一个空字符。当然空字符串(“”)也不例 外。
字符与字符串因为是两种不同的类型,所以也容易区分,这里就不在啰嗦。
1.3 NULL
NULL:值为0,空值。NULL是空地址,不占用任何字节,主要是是用来给指针赋值的。其实就是0地址,这个地址在C语言里面是不允许访问的,访问会出异常。NULL一般用来初始化指针变量。例如:
char *str = NULL; 表明该变量不指向任何有效的内存区域,避免野指针。
#include<stdio.h>int main()
{char d = NULL;printf("%c \n" ,d );printf("NULL的ASCII码值:%d \n" ,d );if(NULL == '\0'){printf("true") ;}return 0;
}
注意以下几点:
(1)从Stdio.h 中我们可以看出:C++中 NULL为(int)0 ,而在 C中NULL为( void* )0。据此可知在C和C++中NULL宏的值有所不同。
(2)C程序中NULL == '\0'为真 , 只是因为'\0'也是数值0而已,两者并不是一个意思,千万别搞混了。
(3)NULL 可以赋值给任意类型变量,相应值为空
(4)为编程规范,在定义指针时,一般需要初始化,常用NULL来初始化。
int *p = NULL,相比直接定义int *p 而言,int *p未初始化,p是一个野指针,保存的是一个随机值 ; int *p=NULL 已经初始化,指向一个空指针。
int *p = NULL等价于于 int *p= 0,p的值是 0x00;int * q ,q的值是一个随机值。
附字符串的输出例子:
/*Jason Gel 2015-8-29 */#include<stdio.h>
int main ()
{char * p = "Jason Gel jin13277480598";char *q = NULL;if(q=='\0'&&q==0){printf("NULL在ASCII码值为0,同空字符 \n");} // while(*p != '\0') //下面这两种写法是等价的 ;
// *和++具有相等的优先级,但结合为从右向左,又因为后缀形式 故 :向将p指向的数据取出打印,然后指针再自增1 while(*p!= 0) //如果写成 while( *p++ !=0 ) ,则字符串的第一个字符不会被打印出来 {printf("%c",*p++ );}printf(" \n ");return 0 ;
}
空字符 空格字符(字符) 空字符串 NULL的区别相关推荐
- 空字符,空格字符,空字符串,unicode表示字符
unicode码编码规则 unicode码对每一个字符用4位 16进制数表示,即两个字节 ascall码 一个字符,占一个字节 所以用unicode码表示 ascall里面的字符 前面 ...
- kettle 空字符串 null问题解决
今天,在配置kettle同步mysql数据的时候,碰到了kettle把空字符串当成null的情况. 解决步骤: 找到配置文件:C:\Users\用户名.kettle目录中找到kettle.proper ...
- pandas 空字符串与na区别_关于python:Pandas用空白/空字符串替换NaN
我有一个Pandas Dataframe,如下所示: 1 2 3 0 a NaN read 1 b l unread 2 c NaN read 我想用空 ...
- 《C和指针》——字符数组和字符串常量的区别
字符数组形式:char message1[ ]="Hello"; 尽管看上去像是一个字符串常量,实际上它并不量,它与char message[ ]={'H','e','l','l' ...
- pandas 空字符串与na区别_python从安装到数据分析应用高手 Pandas处理文本数据(一)...
数据分析师的一天 作为一名数据分析师,目前而言是以业务为中心,取数,清洗整理数据,取数与清洗数据会消耗大量的工作时间,毕竟代码需要跟着业务节奏变化. 其中文本数据相比数值数据更具复杂性,本文就pand ...
- pandas 空字符串与na区别_pandas中对nan空值的判断
pandas基于numpy,所以其中的空值nan和numpy.nan是等价的.numpy中的nan并不是空对象,其实际上是numpy.float64对象,所以我们不能误认为其是空对象,从而用bool( ...
- (文末送书)字符数组与字符串
字符数组与字符串 引言 字符数组的定义与初始化 字符串的概念与存储 常用的字符串处理函数 送书福利 引言 前面介绍的一维数组与二维数组都是以数值型为例,其实数组中也可以存储字符型数组,称为字符数组.字 ...
- Oracle中Null与空字符串' '的区别
含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除 ...
- Oracle中Null与空字符串''的区别
http://read.newbooks.com.cn/info/172049.html Oracle中Null与空字符串''的区别 来源:CSDN 作者:jsjzzh 发布时间:2007-1 ...
最新文章
- python scrapy菜鸟教程_scrapy学习笔记(一)快速入门
- xampp php源码的路径,php – XAMPP中的根路径
- SAP AUT10 查看修改记录
- 从零开始的linux 第十一章
- elementui 加载中_ElementUI cascader级联动态加载回显和搜索看这个就够了
- 杭电1003 java_杭电ACM1003题怎么理解?
- 码支付如何对接网站_做“刷脸支付”怎么推广?怎么办理刷脸支付POS机?
- 2022年道路运输企业安全生产管理人员考试及道路运输企业安全生产管理人员新版试题
- 亚马逊SP-API对接-网站授权
- 萌新扫盲2—双绞线的“一百米诅咒”
- 开发一款游戏引擎所需要的知识与技术
- Android应用内安装apk包
- 2022年618有哪些蓝牙耳机值得买?四款降噪效果好的蓝牙耳机测评
- 玫瑰线 matlab,如何用MATLAB画玫瑰线
- Android 深入理解 ANR 触发原理:Service
- mysql打开eqd_Spring使用DriverManagerDataSource和C3P0分别配置MySql6.0.6数据源
- 北京内推 | 京东物流集团招聘算法实习生
- 翁恺老师 狐狸和兔子练习
- VMware | 装虚拟机后root默认密码 | su: Authentication failure
- JavaWeb_script