四、变量与常量
4、变量的使用
(1)写一个代码计算2个整数的和
如上图代码:我们要使用计算机来计算2个整数的和,就需要在内存开辟空间。对于简单的对象来说,我们使用内置类型就可以来开辟我们所需要的空间了。
对于VS2019集成开发环境,我在源文件的第一行写了#define _CRT_SECURE_NO_WARNINGS 1,这是因为在VS环境中scanf,strcpy等函数都会提示不安全,为了正常使用这些库函数,我们就在源文件的第一行,加上了这一句。
我们每一次写代码,都要加上这一句代码,太麻烦了,怎么可以让我们一劳永逸呢?答案是:我们在VS的newc++file.cpp这个文件中,加入这一句代码,以后我们新建的源文件中就会自动都有:#define _CRT_SECURE_NO_WARNINGS 1
5、变量的作用域和生命周期
(1)作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不是总是有效/可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。
1、局部变量的作用域就是所在的局部范围。(同一个{}内)
2、全局变量的作用域就是整个工程(注:换一个.c文件使用全局变量,要声明(extern)一下变量)
3、补充:定义和声明
①编译器读取代码是从上到下的,所以当我们使用某个值它的定义在后面的时候,我们就要在使用前进行声明
②定义的时候,好的习惯是给他初赋值;声明不用初赋值(声明就是用别人东西,要打招呼)
①局部变量的作用域
图1:局部变量a在代码块中定义,在同一个代码块中可以使用
图2:局部变量a在代码块中定义,不再该代码块中使用,程序报错
从这两个截图我们更加理解局部变量的作用域就是变量的局部范围(一个{}就是一个代码块)。
②全局变量的作用域
图1:全局变量age在一个源文件中的代码块外定义,在该源文件都可以使用
图2:全局变量year在test.c源文件中定义,在add.c源文件中都可以使用
从图1与图2我们可以看出全局变量的作用域就是整个工程。
说明:extern是用来声明外部符号的
6、生命周期
变量的生命周期值的是变量的创建到变量的销毁之间的时间段。
(1) 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
(2) 全局变量的生命周期是:整个程序的生命周期。
(1)局部变量的生命周期
如图我们可得局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
(2)全局变量的生命周期
全局变量在main整个范围都可用,--->全局变量的生命周期=main的生命周期=程序的生命周期。
7、常量
C语言中的常量和变量的定义的形式有所差异。
C语言中常量分为以下几种:
1、字面常量
2、const 修饰的常变量
3、#define 定义的标识符常量
4、枚举常量
(1)字面常量
1;//整形字面常量
3.14;//浮点型字面常量
‘a’;//字符字面常量
“abc”;//字符串字面常量
(2)const修饰的常变量
图1:const修饰的常变量,不能被修改
图2:被const修饰后,a的本质还是变量
总结:
由图1和图2可知:const修饰的常变量,在C语言中只是在语法层次上限制了变量不能被修改,但是变量在本质上还是一个变量,所以叫常变量。
(3)#define定义的标志符常量(也可叫符号常量)
如图:这就是#define定义的符号常量
总结:
格式:#define 常量名 字面常量
tip:1、习惯上常量名用大写,变量名用小写
2、意义:在需要改变一个常量时,能做到“一改全改”
(4)枚举常量
枚举:顾名知义,就是一一例举
如:血型、性别、三原色
如下图:对三原色类型的定义
//注:枚举常量的默认是从0开始,依次向下递增1的
五、字符串+转义字符+注释
1、字符串
如:“abc”
①定义:由双引号引起来的一串字符称为字符串字面值,或者简称字符串。
②C语言规定,每一个字符串的末尾隐藏放一个‘\0’字符,‘\0’是字符串的结束标志。
③注意:‘\0’是结束标志,不算作字符串的内容。
图1:F10调试之后,观察变量的值 —— 可以看出C语言规定,每一个字符串的末尾隐藏放了一个'\0'。
图2:%s:打印字符串,打印到‘\0’才停止。
内存图解:
图3:stelen:计算字符串的长度
1、strlen:C语言提供的一个库函数,可以计算字符串的长度,统计的是\0之前字符的长度
2、strlen:string字符串,length长度 他的标准库#include
注意:
1.字符串的占用空间VS长度:占用空间要加\0,长度不加\0
2.不能把一个字符串赋给一个字符变量。例:c=“a”是错的
3.C语言没有字符串变量,但可用字符数组来表示
2、字符常量
如:‘a’
1、分类:C语言中,字符常量分为普通字符常量和转义字符两种
(1)普通字符:用单引号括起来的一个字符,该字符是除单引号和反斜杠以外的所有可显示字符。
(2)转义字符:①转义字符以反斜杠开头;②转义字符具有特定的含义,不同与字符原来的意义(就是转变原来的意义),故称“转义”字符。
转义字符 释义
\? 在书写连续多个问号时使用,防止他们被解析成三字母词(//??)-三字母词-】,现在大多编译器不支持)
\' 用于表示字符常量'
\“ 用于表示一个字符串内部的双引号
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a 警告字符,蜂鸣
\b 退格符
\f 换页符
\n 换行
\r 回车
\t 水平制表符
\v 垂直制表符
\ddd ddd表示1~3个八进制的数字。 如: \130 X
\xdd
dd表示1~2个十六进制数字。 如: \x30 0
以上转义字符我们熟悉就可以了,不用背。
图1:如下演示一下\n字符
常用:\n换行 \t
\t
用来占位,一般相当于四个空格,或者 tab 键的功能。
图2:演示\ddd字符
重点:
1、\ddd —— ddd表示1~3个八进制的数字。 如: \130 X
2、\xdd —— dd表示1~2个十六进制数字。 如: \x30 0
tip:1.在C语言中字符型数据包括字符和字符串两种。字符型数据在内存中存储的是字符的ASCII码值的二进制形式,一个字符的存储占用一个字节。
常用ASCII值:
1、0-ASCII码值48
2、A-ASCII码值65(小写字符=大写字符+32)
3、%c-打印字符-ASCII值(十进制)
3、注意字符串和字符常量的区别:
(1)从表示形式上看:字符常量是用单引号括起来的,字符串是用双引号括起来的
(2)从字符的个数上看:字符常量只能是单个字符,字符串常量可以是0个或多个字符
(3)有字符变量,但没有字符串变量。C语言没有专门的字符串类型变量,而是使用字符型数组或字符型指针来存储字符串
(4)字符常量在内存中占用1个字节,字符串常量在内存的字节数是字符个数加1。(每一个字符串的末尾隐藏加一个字符串结束标志\0)
4、注释
1.注释有两种风格:
(1)C语言风格的注释 /*xxxxxx*/
段注释
缺陷:不能嵌套注释
(2)C++风格的注释 //xxxxxxxx
行注释
2.理解
(1)注释可以是任意字符
(2)注释可以出现在程序中的任意位置
(3)注释不参与程序的运行,主要用于对程序的某些关键部分进行说明,其目的是提高程序的可读性
六、选择语句
C语言是一门结构化的程序设计语言:支持三种结构 —— ①顺序结构;②选择结构;③循环结构。
选择结构:选择结构用于判断给定的条件;根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。
如:如果你好好学习,校招时拿一个好offer,走上人生巅峰。如果你不学习,毕业等于失业,回家卖红薯。这就是选择!
流程图:
代码演示:
看到时知道是选择就行,后期详细讲解
七、循环语句
循环结构是指在程序中需要反复执行某个功能而设置的一种程序结构。它由循环体中的条件,判断继续执行某个功能还是退出循环。
在C语言中常用的三种循环:
①while语句-讲解
②for语句(后期讲)
③do ... while语句(后期讲)
比如我们每天都要日复一日的吃饭,这就是循环。
while流程图:
代码演示:while循环
今天的内容就结束了,希望对大家有帮助,后续持续更新初识C语言系列的内容。