【C++从入门到熟练练习题】003 C++常量(含转义字符)及C++作用域(全局及局部变量)

目录

一、前言

1、上节课回顾

2、上节思考题答案

二、重点知识介绍

1、作用域

2、常量

三、例题

四、思考题


一、前言

1、上节课回顾

上一次给大家讲了C++数据类型还有C++注释,在以后的代码中,随着代码的增多,注释是必不可少的,它会提示我们代码功能,变量含义等等。所以我们要熟练掌握注释,我们也拓展了数据类型,数据类型是C++比较基础也比较核心的内容。

想要学好,最好的方式就是多想,多练习。

今天主要给大家讲的就是变量的作用域和常量,作用域可能等大家学到C++的循环语句,C++的函数部分才会有更加深刻的体会,在这里就是先让大家对这个概念有所认识。等我们把所有常用的基础讲完,我们会开始讲数据运算,各种循环语句,判断语句等等。

2、上节思考题答案

题目:要求:

1.定义一个生活用具枚举类型,并赋初值

2.利用typedef为双精度浮点型变量重命名,使用新的变量名创建变量

3.将他们输出。

4.在所有代码中加上单行注释。

5.在代码最前面用多行注释写自己的完成时间及内容

/*
	日期:2019.1.31
	内容:typedef、枚举类及注释的应用。
*/

#include<iostream> // 头文件,输入输出时使用

using namespace std; // 引用命名空间

typedef int Status; // 使用typedef给int一个新的名称

void main() {  // 主函数,程序入口

	enum stationery
	{
		pen,
		eraser = 2,
		pencil,
		pencil_case,
	} sta; // 枚举类动物
	sta = pencil_case; // 给枚举类变量赋值为pencil_case,(2+2 = 4)
	Status st = 1; // 利用新的类型名定义一个变量并赋初值为1.
	cout << "st = " << st << endl; // 输出定义的变量
	cout << "stationery = " << sta << endl; // 输出stationery 赋值后的值。

	
}

运行结果如下:

二、重点知识介绍

1、作用域

作用域,顾名思义,就是变量能作用的范围。比如古代的将领,兵马大元帅能够统领所有士兵,下面的一个先锋只能管自己手底下那几个人。官职不同,能管理的范围不同,权力能触及的领域也不同。

对于C++来说,在不同地方定义的变量,那它能够作用的范围也不同。

一般来说有三个地方可以定义变量:

(1)在函数或一个代码块内部声明的变量,称为局部变量

(2)在函数参数的定义中声明的变量,称为形式参数

(3)在所有函数外部声明的变量,称为全局变量

第二个概念我们暂时不讲,等我们讲到函数的时候,再给大家说。接下来给大家详细讲解一下全局变量与局部变量。

1.全局变量:

在所有函数外部定义的变量(通常是在程序的头部),称为全局变量

全局变量有如下特点:

(1)全局变量的值在程序的整个生命周期内都是有效的。

(2)全局变量可以被任何函数访问。也就是说,全局变量一旦声明,在整个程序中都是可用的。

举个例子:

/*
日期:2019.1.31
内容:全局变量
*/

#include<iostream> // 头文件,输入输出时使用

using namespace std; // 引用命名空间

int a = 11;  //全局变量

void main() {  // 主函数,程序入口
	cout << a << endl;

}

2.局部变量

在函数或一个代码块内部声明的变量,称为局部变量。它们只能被函数内部或者代码块内部的语句使用。

举个例子:

/*
日期:2019.1.31
内容:局部变量
*/

#include<iostream> // 头文件,输入输出时使用

using namespace std; // 引用命名空间

void main() {  // 主函数,程序入口

	int b = 22;//局部变量
	
	cout << b << endl;

}

3.全局变量与局部变量的联系与区别

1.局部变量和全局变量的名称可以相同,但是在函数内,局部变量的值会覆盖全局变量的值

举个例子:

局部变量将主函数中的全局变量值覆盖

2.当局部变量被定义时,系统不会对其初始化,必须自行对其初始化。定义全局变量时,系统会自动初始化为下列值:

数据类型 初始化默认值
int 0
char ' \0 '
float 0
double 0
pointer NULL

 虽然如此,但是我们还是要正确初始化变量,不然可能会导致程序出现严重错误。

2、常量

学过数学的人对常量这个概念还是比较熟悉的,就不过多介绍啦,在C++中,常量是指:在程序执行期间值不会发生改变的量

C++自带一些常量,我们也可以人为定义一些常量,首先先给大家说一下C++中自带的常量,即我们无需再次声明或定义即可直接使用的量。

1.布尔常量

C++的布尔常量一共两个,并且这两个都是标准的C++关键字。

true    值代表真。

false  值代表假。

我想大家对这两个并不陌生,在二进制中,由于0表示假,1表示真,所以C++中,当我们在判断真假时,可以直接赋值为0或1来简化代码。虽然在一些情况下并不是很规范。

2.字符常量

字符常量一般是指转义字符。在刚开始教大家换行操作时,想必大家还能想起来 “ \n ” 表示的是换行,“ \n ” 就是一个转义字符。常用转义字符如下表:

转义序列 含义 转义序列 含义
\\ \ 字符 \n 换行符
\' ' 字符 \r 回车
\" " 字符 \t 水平制表符
\? ? 字符 \v 垂直制表符
\a 警报铃声 \ooo 一到三位的八进制数
\b 退格键 \xhh . . . 一个或多个数字的十六进制数
\f 换页符    

上面两个都是C++自带的常量,因为功能的不同,程序需要的常量也不同,所以系统不可能包含所有的常量,接下来的是我们自己定义一些常量。

3.自定义常量

自定义可以定义很多种类型的常量,比如整型的,浮点型的,字符串型的,都可以。首先我们要说的是两种自定义常量的方法

(1)使用 #define 预处理器。

这种方法常常用于C语言的数据结构。定义一些数据结构中常用的常量,比如顺序表中的表长、溢出、正确、错误等等。当然用处不止这些。话不多说,用事实说话。

#define PAI 3.14159
    #define TRUE 1
    #define FALSE 0
    #define ERROR -1
    #define OK 1

仔细看你会发现,预处理器定义常量时有如下特点:

a.常量名每个字母都大写(当然不是必须这样写,只不过这样写更规范)

b.定义完常量后,后面不加 “ ;” 来表示语句的结束

(2)使用 const 关键字

使用 const 关键字声明常量格式如下:

const 类型 常量名 = 常量值 ;

举几个例子:

const int  LENGTH = 100;
    const int  WIDTH = 50;
    const char NEWLINE = '\n';

 

三、例题

要求:

1.利用 #define 预处理器定义5个整型的全局常量:IA、IB、IC、ID、IE。

2.利用使用 const 关键字,定义5个字符型的局部常量:CA、CB、CC、CD、CE。

3.将他们输出。

4.在代码中加上单行或多行注释。

5.在代码最前面用多行注释写自己的完成时间及内容。

1.代码

/*
日期:2019.1.31
内容:全局变量、局部变量与常量
*/

//定义五个全局常量
#define IA 5
#define IB 20
#define IC 13
#define ID 14
#define IE 1024

#include<iostream> // 头文件,输入输出时使用

using namespace std; // 引用命名空间


void main() {  // 主函数,程序入口

	//定义五个局部常量
	const char CA = 'l';
	const char CB = 'o';
	const char CC = 'v';
	const char CD = 'e';
	const char CE = 'u';

	//将定义的常量输出
	cout << IA << IB << IC << ID << "  " << IE << endl;
	cout << CA << CB << CC << CD << "  " << CE << endl;
}

2.运行结果

四、思考题

要求:

1.利用 #define 预处理器定义3个整型的全局常量,2个单精度浮点型的全局变量。自由命名。

2.利用使用 const 关键字,定义3个字符型的局部常量,两个双精度浮点型的局部变量。自由命名。

3.将他们输出。

4.在代码中加上单行或多行注释。

5.在代码最前面用多行注释写自己的完成时间及内容。

思考题的答案会在下一次的【C++从入门到熟练练习题】中公布哦,希望大家能够多多练习。