目录
常量、变量
生活中总有一些不能改变的东西,比如性别、圆周率、出生年月、身份证号,这是我们可以称为常量。
一些可以改变的,比如身高、体重、学习成绩,这些我们称为变量。
常量
字面常量
3.14、100。
const修饰的常变量
从上面不难看出我们创建的变量a,因为被const修饰了,不能被改变,所以现在a具有常属性,但是为什么叫变量呢。下面我们用个例子来证明。
因为数组中[ ]中需要是常量,但是我们const修饰的a却不行,所以const修饰的a是一个具有常属性的变量。
#define定义的标识符常量
我们在上面用定义了一个叫M的常量,把他放到数组中也成功运行了,所以说#define定义的量也是常量。
枚举常量
生活中可以一一列举的量,例如性别(男、女)、三原色(红、黄、青)、血型等等。
变量
变量的定义、命名、分类
①变量的定义:数据名(int) + 变量名(a) = 0(初始值)。
这样我们就定义了一个初始值是0的叫做a的变量
②变量的命名
变量命名有几种要求:
- 只能由字母(包括大小写)、数字和下划线(_)组成
- 不能以数字开头
- 长度不能超过63个字符
- 变量名中区分大小写
- 变量名不能用关键字(float)
③变量的分类
- 局部变量
什么是局部变量呢?
大括号内部定义的变量叫局部变量。
这里我们定义的a就是局部变量,并且只能在红色圈框出的大括号范围内使用。
- 全局变量
在括号外部定义的变量就是全局变量
我们在括号外面定义了一个变量b,这就是全局变量。
变量的作用域和生命周期
我们上面讲到了什么是局部变量什么是全局变量,那么他们有啥区别呢。
区别就是可以使用的范围不一样,局部变量的使用范围只在包含他的那个大括号内部,出了大括号就不能使用了,所以大括号也可以称为他的作用域。
局部变量的作用域就是局部变量创建的大括号内部。
全局变量是在大括号外部创建的,他的作用域(作用范围)是整个工程(也可以在同一工程的其他头文件中使用,但是使用前要用extern声明)。
上面可以看出变量a出了大括号后便不能使用了,而变量b可以使用,我们可以看出a是局部变量b是全局变量。
生命周期和作用域的意思差不多,可以理解为从人出生到死亡是一个生命周期,程序的生命周期就是从创建到释放。
电脑中储存数据都是用的二进制,我们创建一个变量就要在内存中开辟一个空间用来存放,当我们用完之后就要释放掉。局部变量的生命周期就是在大括号内,出了大括号就被释放,所以局部变量的生命周期也是大括号内,同理全局变量的声明2周期是整个工程。
字符串、转义字符、注释
字符串
概念:用双引号引起来的一串字符叫做字符串(”abcdef“)
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a', 'b', 'c' };
printf("%d", sizeof(arr1));
printf("%d", sizeof(arr2));
return 0;
}
注意事项:字符串后面有一个隐藏的\0作为结束标识符,如以上代码中的arr1和arr2输出的值分别是3和随机值。
因为arr2中没有\0,所以没收到停止标识符,就会一直往后面找,什么时候找到,什么时候停止。
在上面我们使用了一个函数strlen(计算字符串大小),使用这个函数前我们要先引用头文件
#include <string.h>。
转义字符
我们平时用的最多的就是\n和\t,其他的我们了解一下就行。
重点了解一下\ddd和\xhh。
\ddd表示\后面加上三个八进制的数字(0-7),他们替换成十进制后,然后打印成十进制在acsll码表中代表的字符。
074用八进制转换成十进制和x2b用十六进制转换成10进制。
把这两个图的结果和第一个图的结果一对比就可以得出他们最后都是又原本进制然后转换成10进制后,用10进制在ascll码表上所代表的值来输出的。(如果数值太大会报错。)
注释
注释有两种用法。(VS的快捷键是Ctrl + k + c,取消注释是Ctrl + k + u)
注释也有两种,一种是/* */,一种是//,/* */有一种弊端,就是多个/* */一起使用时,/*会去找离他最近的那个*/,如图所示。
我们本来1和4是一组,3和2是一组,因为/*回去找最近的*/,所以出现了错误。因此我们通常使用C++的注释//。
第一种就是将暂时不需要的代码暂时停用
第二种是解释代码的意思。
比如你写了一个代码过去一年的了,现在突然要重新看一下这个代码,但是已经忘记这个代码是什么意思了,所以在复杂或者有什么特殊用处的代码要敲上注释,方便理解。