C语言重要知识点总结【7】:C语言中的常量、变量、标识符

C语言重要知识点总结【7】:C语言中的常量、变量、标识符

目录

  • 一、常量-
      3.1 普通字符- 3.2 转义字符(表格)- 3.3 常见字符与ASCII代码表- 4.1 字符串所占内存字节数-

      大一下学期学习了C语言、暑假在家没事又把C语言复习了一遍。因此,趁热打铁,把所学内容写成笔记,以便以后复习,也希望能够帮助大家学好C语言。
      以下内容如有错误,请大家在评论区指正,谢谢支持,共同进步。 go、go、go !!!

      一、常量

      在C语言中,数据有常量和变量之分: 若在程序执行过程中,其数值可以改变的量称为`变量`
      常量:分为 直接常量 和 符号常量 。直接常量:分为整型常量、实型常量、字符常量和字符串常量。(通常将整型常量和实型常量合称为数值常量)

      首先大概看一下关于常量的内容:

      1. 整型常量:就是常整数,包括正整数、负整数和0。有十进制八进制十六进制三种表示形式。需要注意的是,八进制常整数在书写时以数字0作前缀;十六进制以0x作前缀。1. 实型常量 :又称浮点型常量,采用十进制小数形式指数形式表示。1. 字符型常量 :用单引号括起来的单个字符,分为普通字符(‘a’,‘Z’,‘6’,’#’,’?’ )和转义字符(’\n’是换行符、’\t’是水平制表符,横向跳格,8个空格)1. 字符串常量 :用双引号括起来的字符串1. 符号常量:用标示符代表一个常量,使用之前必须定义,具有一改全改的优点。例如: #define PI 3.14 ## 1. 整型常量

      整型常量:包括正整数负整数0

      1. 十进制整数:书写形式通常是整数的写法。例如:0、16、88、666、-99 等。1. 八进制整数:书写形式通常在八进制整数的前面加一个数字0(0作前缀)。例如:00、0111、015、021等,它们分别表示十进制整数:0、73、13、17。1. 十六进制整数:书写形式通常是在十六进制整数的前面加0x(0x作前缀)。其中每个数字可以是 0 ~ 9、a ~ f 或 A~F 中的数字或英文字母。 例如:0x0(十进制0)、0x111(十进制273) 、0x15(十进制21)、0x21(十进制33 )、0x5a(十进制90 )、0Xa5(十进制165 )…… ## 2. 实型常量(浮点型常量)

      实型常量:又称浮点型常量,有 十进制小数形式指数形式 2种表示形式。

      ① 十进制小数形式:

      由数字和小数点组成

      例如:3.141590.088.00.123-6.66

      ② 指数形式:

      由于计算机输入或输入是无法表示上角或下角,故规定以字母e或E代表以10为底的指数

      指数形式的实型常量 由十进制小数形式 或 十进制整型常量部分 + 指数部分,即e或E之前必须有数字,且e或E后面必须为整数。 错误形式: 0.35e 【e后面缺少一个整数】
      78e-1.2 【1.2 不是整数】

      3. 字符常量

      3.1 普通字符

      普通字符:用单撇号括起来的一个字符

      • 单引号括起来的字符包括:英文字母大、小写字符各26个、数字字符10个,以及空白符(空格符、制表符、换行符),标点和特殊符号(键盘上的共30个),它们也称为C语言的基本字符集。- 如’a’,‘Z’,‘6’,’#’,’?’ 等是合法的字符常量,在内存中占一个字节。- 单引号内如果是一个空格符,也是一个字符常量。- 字符常量的值,就是它在ASCII编码表中的值是个从0~127之间的整数,因此字符常量可以作为整型数据来进行运算。- 表达式 ‘Y’+32 的值为 121,字符'Y'对应ASCII码值是89- 表达式 ‘7’+‘6’ 的值为109,通过查表可以发现'7''6'对应的ASCII码值分别是55和54。应该注意’7’和7是不一样的,作为字符常量'7'所代表的整型常量值是55,7对应的是整型常量7。 ### 3.2 转义字符(表格)

      转义字符主要用来表示那些用一般字符不便于表示的控制代码,构成字符常量的控制字符必须用转义字符表示,这种“控制字符”在屏幕上是不能显示的,转义字符虽然包含两个或多个字符,但它只代表一个字符。转义字符的意思是将 \后面的字符转换成另外的意义。

      转义字符分为一般转义字符、八进制转义字符和十六进制转义字符。

      • 一般转义字符'\n'是换行符、'\t'是水平制表符(将输出的位置跳到下一个Tab位置,一个Tab位置为8,即横向空8个格),'\?'是一个问号……- 八进制转义字符:反斜线后的八进制数可以不用 0 开头,由 反斜杠’’ 和随后的 1~3个八进制数字 构成的字符序列。’\60’’\101’’\141’分别表示字符’0’、‘A’和’a’。因为字符’0’、'A’和’a’的ASCII码的八进制值分别为60、101和141。- 十六进制转义字符反斜杠’’字母x(字母x是小写,不能用大写X)及随后的 1~2个十六进制数字 构成的字符序列。’\x30’’\x41’’\X61’ 分别表示字符’0’、‘A’和’a’。因为字符’0’、'A’和’a’的ASCII码的十六进制值分别为0x30、0x41和0x61。 最后一个小知识点:换行符'\n'对应的十进制数是10,可以用八进制数 '\012'表示。
      共13个转义字符含义(字符值)作用
      1`\'`单撇号输出单撇号 `'`
      2`\"`双撇号输出双撇号`"`
      3`\?`问号输出问号字符`?`
      4`\\`反斜线输出反斜线字符`\`
      5`\a`警告(alert)产生声音或视觉信号
      6`\b`退格(backspace)将光标当前位置后退一个字符
      7`\f`换页(form feed)将光标当前位置移动到下一页的开头
      8`\n`换行将光标当前位置移动到下一行的开头
      9`\r`回车将光标当前位置移动到本行的开头0
      10`\t`水平制表符将光标当前位置移动到下一个Tab位置1
      11`\v`垂直制表符将光标当前位置移动到下一个垂直制表对齐点2
      -转义字符含义(字符值)作用
      12`\o \oo 或 \ooo` 其中`o`代表一个八进制数字八进制码对应的ASCLL字符与该八进制对应的字符3
      13`\xh[h···]` 其中`h`代表一个十六进制数字与十六进制码对应的ASCLL字符与该十六进制对应的字符

      3.3 常见字符与ASCII代码表

      在这里插入图片描述
      在这里插入图片描述

      4. 字符串常量

      字符串常量是用 双撇号 "" 括起来的多个字符的序列,如:“a”、“abc123”、“China”、“你好”……

      • 只要是“双撇号”括起来的,就算只有一个字符也叫字符串,如"a"。字符常量 'a’与字符串常量"a"是不同的。- 一个字符在内存中只占一字节,而字符串本质上是多个字符组成的字符数组。C语言规定,在每一个字符串常量的结尾,系统都会自动加一个字符’\0’作为该字符串的“结束标志符”,系统据此判断字符串是否结束。 这里要特别强调一点:’\0’是系统自动加上的,不是人为添加的。- ’\0’ 是 ASCII 码为 0 的字符,它不会引起任何控制动作,也不是一个可以显示的字符。- 比如字符串常量"CHINA",表面上看它只有 5 个字符,但实际上它在内存中占6个节,‘C’、‘H’、‘I’、‘N’、‘A’、’\0’ 各占一个字节。如果要输出该字符串,’\0’ 不会输出。也就是说,虽然实际上总共有 6 个字符,’\0’ 也包括在其中,但输出时 ‘\0’ 不会输出。系统从第一个字符 ‘C’ 开始逐个输出字符,直到遇到 ‘\0’,则表示该字符串结束,停止输出。- 如果“双撇号”中能看见的字符有 n 个,则该字符串在内存中所占的内存空间为 n+1 字节。 ### 4.1 字符串所占内存字节数
      1. 双撇号中什么都不写,则只有 ‘\0’ 一个字符,所以只占1字节。1. "a" 有 1 个可见字符,占 2 字节。1. "China" 有 5 个可见字符,占 6 字节。1. "How are you"中,空格也是字符(占一个字节),也算是可见的,所以总共有 11 个可见字符,共占 12 字节。1. "I love you"共 10 个可见字符,共占 11 字节。1. "你好",可见4个字节,共占 5 字节。 【注意】第6个"你好"为什么占 5 字节?有 2 个可见字符不是应该占3字节吗?C 语言规定,1个英文字符占 1个字节,而 1个中文字符占 2个字节,就算是中文的标点符号也是占 2个字节。所以两个汉字占 4 字节,加上 ‘\0’ 总共是 5 字节。

      5. 符号常量

      符号常量:用标示符代表一个常量,使用之前必须定义,具有一改全改的优点。

      定义符号常量的一般形式

      #define 标识符 常量

      例如:将PI定义为符号常量

      #define  PI 3.14
      • 要区分符号常量和变量是不一样的,符号常量不占内存,只是一个临时符号,代表一个值,在预编译后这个符号就不存在了,故不能对符号常量赋新值。- 为与变量名相区别,习惯上符号常量用大写字母表示,如PI(π),PRICE(价格),N(数)等 ``` #include<stdio.h> #define IP 3.14 //符号常量:在使用之前必须先定义
                        //优点:改一处,即改全部
        
        //从此行开始,以后所有的PI都代表3.14 int main() { float r,S,V; //定义3个单精度浮点型变量 r,c,s printf("请输入圆的半径 r="); scanf("%f",&r); //输入圆的半径 S=4IPrr; V=4.0/3IPrr*r; printf("\n圆的表面积 S=%.2f\n",S); printf("圆的体积 V=%.2f\n",V); return 0; }
      
      运行结果…………………………………………<br> <img src="https://img-blog.csdnimg.cn/20200824175315446.png#pic_center" alt="在这里插入图片描述">
      
      # 二、变量
      
      >  
       变量代表一个`有名字`、具`有特定属性`的一个<mark>存储单元</mark>。他用来存放数据,也就是存放变量的值。在对程序编译连接时有编译系统给每一个变量名分配一个 **存储地址** 。 
      
      - **变量名开头必须是字母或下划线,不能是数字。** 实际编程中最常用的是以字母开头,而以下划线开头的变量名一般都是系统专用的。- **变量名绝对不可以是C语言关键字**(C语言关键字一般常用的有32个,在谭浩强写的《C程序设计》中有37个关键字),并且变量不能有空格。- 变量名的长度应当符合“min-length && max-information”原则。- 大写字母和小写字母是两个不同的字符,sum和SUM不同变量名。- 一般而言,变量名用小写字母表示,与人们日常习惯一致,以提高可读性。
      变量的数据类型:
      
      <img src="https://img-blog.csdnimg.cn/20200824184838160.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjAyMjA4Mw==,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述">
      
      ### 1. 常变量
      
      C99允许使用常变量,方法是在定义变量时,前面加一个`关键字const`。

      const int a=3; //定义一个整型变量,指定其值为3, //而且在变量的存在期间其值不能改变。

      
      常变量具有变量的基本属性:有类型、占储存单元,只是不允许改变其值。常变量具有符号常量的优点,使用更方便。
      
      <mark>常变量与符号符号常量区别</mark>
      
      在编译后符号常量就不存在了,二常变量需要占用存储单元。

      define PI 3.1415926 //定义符号常量

      const float pi=3.1415926 //定义常变量

      ```

      注意:有些编译系统还未实现C99的功能,初学者尽量不用,了解即可。但如果当你对C语言更加深入地去学习,常变量其实也是一个比较重要的知识点。

      三、标识符

      用来对变量、符号常量名、函数、数组、类型、等命名的有效字符序列统称标识符(identifier)。

      C语言规定标识符只能由字母数字下画线3种字符组成,且第一个字符必须是字母或下画线

      • 例如:sum ,average , _total , Class , day ,month , Student_name , lotus_1_2_3 , BASIC , li_ling……- 不合法标识符:M.D.John ,¥123 , #33 , 3D64 , a>b(不能用标点符号 . ¥ # 等)- 标识符可以任意长,但一般只有前32位有效 C语言标识符分为以下三类:
      1. 关键字(32个)auto、break、case、char、const 、continue、default、do、double、else、enum、extern float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while,关键字是C语言中用来表示特殊含义的标识符,由系统提供。关键字有特定的语法意义,不允许用户重新定义,也不能用作变量名或函数名。1. 预定义标识符: C语言中预先定义了一些标识符,他们有特定的含义,通常用做固定的库函数中的函数名预编译处理中的专门命令。如scanfprintffabssqrtdefineinclude等。C语言允许用户标识符与预定义标识符同名,但这将使这些标识符失去系统规定的原意。为了避免误解,建议用户为标识符取名时尽量不要与系统预先定义的标准标识符(如标准函数)同名。1. 用户标识符:用户标识符是由用户自己定义的标识符,命名时应遵守标识符命名的原则,最好做到见名知义,这样可以提高程序的可读性,一般选用相应的英文单词或拼音字母的形式,如minmaxsumscore(成绩)aver(平均值)row(行)colum(列)total(总数)max_value…… 变量的数据类型:

      在这里插入图片描述

      最后推荐系列文章:

      在这里插入图片描述

posted @ 2020-12-29 11:34  刘桓湚  阅读(2046)  评论(0编辑  收藏  举报