C语言字符常量与字符串常量

c语言基础篇 专栏收录该内容
29 篇文章 1 订阅

字符常量:一个用单引号括起来的单个字符(或字符转义序列或三字母词)

实质(含义):是一个整形值。属于四大基本数据类型(分别是整型,浮点型,指针,聚合类型)中的整型(integers)。

        如‘a',   '\n',   '??!',   '\24'

 针对上面四个例子逐一讲解:

     1. 第一个’a'似乎没什么好说的,严格满足定义。(有一点想说一下,'abc'到底算不算字符常量呐?在《C与指针》中说这种情况属于多字节字符常量,并不违反标准,但由于在不同环境下可能不一样,并不鼓励使用。我在VC上试了一下,含有'abc'的程序的确可以运行,不过它对应的整形数据等于’c'(即尾字母对应的整形数据) 

     2. 第二个’\n'牵扯到字符转义序列,转义序列由一个反斜杠\加上一或多个字符构成。

             如\n,\t,\\,\?等。其详细含义此处不再赘述。那么‘\n'究竟代表什么呐?我准备在实践中检验一下

于是我进行了如下代码(并且把’\?'换为其他‘诸如此类单引号下是转义序列的字符常量)发现它竟然就是’?'对应的ASCII码值。其它的经检验也都相同。但是如果只是随意的如’\r'(引号内并非转义序列则不会得到与'r'相同的结果)。

#include<stdio.h>
#include<Windows.h>
int main(void)
{
    char i;
    i = '\?';
    printf("%d", i);
    Sleep(10000);
    return 0;
}  

      3. 第三个‘??!'牵扯到三字母词。三字母词就是几个字符的序列,合起来表示另一个字符。

                                     如下

三字母词对应字符
??/\
??!|
??)]
??([
??>}
??<{
??=#
??-~

               所以'??!'与'|'对应的ASCII码值相同

      4. 第四个只需要知道在C语言中用”\+数字“如(\40)来表示相应八进制数代表的字符,用“\x+数字”来表示相应十六进制数代表的字符。在《C与指针》中讲转义序列时说

         \ddd,其中三个d均是八进制数字,这个转义符表示的字符既是给定八进制数值代表字符。如\40对应十进制32,则其代表ASCII码值为三十二的字符即 空格。注意:' ',引号中间是一个空格也属于字符常量。

         \xddd与上类似,只是将八进制转化为十六进制。如\x20对应十进制32,同样表示空格这个字符。                                                      注意:在C语言中,所有字符常量都作为整形量来处理(即字符型数据与整形数据可通用)如 char i;   i='a'-32;   printf("%c",i);则将输出’A'                                                                                                                                                                    或者printf("%d",i);则将输出65

或          int i;                                                                                                                                                                                                   i='a'-32;  

  printf("%c",i);将输出'A'                                                                                                                                                                       或者printf("%d",i);则将输出65

附:常用ASCII码值: 'a'~'z'    97~122  

                                    'A'~'Z'     65~90                                

                                    '0'~'9'      48~57

 字符串常量 :   由一个双引号括起来若干字符的序列(在这里若干可表示0或1或...)。

       如"hello world","C language programming",   "a"   , "123.45",均合法。                                                                                     注意:1.字符串常量不能被赋值,同时字符串常量不能对值修改  

           2.字符串常量在内存中占若干字节(至少一个字符结束标志)占字节数等于字符串中字节数加一。在C语言中系统会在每个字符串的最后自动加一个'\0'(本身并不看作是字符串的一部分)作为字符串的结束标志。如''hello"在内存中占六个字节。

           3.无字符串变量,如果想将一个字符串存放在变量中以便保存,必须使用字符数组。用数组中每一个元素存放一个字符。如char a[]="hello";          

            4.属于静态存储类,在整个程序运行中只存储一份。

                             进一步探讨字符串常量,联系字符串数组与指针       

 

 

               

 

 

  • 23
    点赞
  • 0
    评论
  • 69
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值