空字符 空格字符(字符) 空字符串 NULL的区别 您所在的位置:网站首页 ascii中空格是多少 空字符 空格字符(字符) 空字符串 NULL的区别

空字符 空格字符(字符) 空字符串 NULL的区别

2023-09-15 02:02| 来源: 网络整理| 查看: 265

【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 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 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 ; }

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有