1. 变量
变量是一个用于存储值的命名内存位置,可以存储多种不同类型的数据,例如整数、实数、字符或布尔值等。在C++中,必须先定义变量然后才能使用它。
1.1 定义变量
变量定义是指声明一个变量并为其分配存储空间。在C++中,变量的定义必须包含以下三个部分:
data_type variable_name = initial_value;
其中,data_type指定变量的数据类型,variable_name是变量的名称,initial_value是变量的初始值(可选)。
例如,定义一个整型变量 num 并赋初值为 10:
int num = 10;
1.2 初始化变量
变量可以初始化为一个初始值。如果没有给变量指定初始值,变量将被初始化为默认值。例如:
int num; // 没有初始化,num 的值为未定义
int a = 0; // 初始化为 0
double b = 1.5; // 初始化为 1.5
char c = 'a'; // 初始化为字符 'a'
1.3 变量数据类型
(1)整型
整型变量用于存储整数值。整型变量有以下几个子类型:
short
:短整型,通常占2个字节。int
:整型,通常占4个字节。long
:长整型,通常占4或8个字节。long long
:超长整型,通常占8个字节。
short a = 10;
int b = 100;
long c = 100000;
long long d = 1000000000;
(2)浮点型
浮点型变量用于存储小数值。浮点型变量有以下两个子类型:
float
:单精度浮点型,通常占4个字节。double
:双精度浮点型,通常占8个字节。
float a = 1.23f;
double b = 3.1415926;
(3)字符型
字符型变量用于存储字符值。字符型变量只能存储一个字符。
char a = 'A';
(4)布尔型
布尔型变量用于存储真假值。布尔型变量只有两个可能的值:true
和false
。
bool a = true;
1.4 变量作用域
变量作用域是指变量在程序中可见的范围。
(1)局部变量
局部变量是定义在函数内部的变量,只能在函数内部访问。当函数执行完毕后,局部变量就会被销毁。
#include <iostream>
void func()
{
int num = 10; // 局部变量
std::cout << num << std::endl;
}
int main()
{
func();
return 0;
}
(2)全局变量
全局变量是定义在函数外部的变量,可以在整个程序中访问。全局变量不会在函数执行完毕后被销毁,它们会在程序结束时才释放。
#include <iostream>
int num = 10; // 全局变量
void func()
{
std::cout << num << std::endl;
}
int main()
{
func();
return 0;
}
(3)静态变量
静态变量是在函数内部定义并且只能在函数内部访问的变量,但是它们和局部变量不同。静态变量在函数执行完毕后并不会被销毁,而是保持它们的值直到下一次调用这个函数。
#include <iostream>
void func()
{
static int num = 10; // 静态变量
std::cout << num << std::endl;
num++;
}
int main()
{
func(); // 输出 10
func(); // 输出 11
return 0;
}
2. 常量
常量是一个固定的值,不可更改。一旦定义了常量,它的值在程序执行期间不能被改变。
2.1 定义常量
定义常量时需要使用 const
关键字。语法如下:
const data_type variable_name = value;
其中,data_type表示常量的数据类型,variable_name表示常量的名称,value表示常量的初始值。例如:
const int NUM = 10;
const double PI = 3.1415926;
2.2 常量类型
(1)字符串常量
字符串常量是由字符序列组成的常量。C++中,字符串常量必须使用双引号来括起来。
const char* STR = "Hello, World!";
(2)字符常量
字符常量是由单个字符组成的常量。C++中,字符常量必须使用单引号来括起来。
const char CHAR = 'A';
(3)整型常量
整型常量用于存储整数值。整型常量可以是十进制、八进制或十六进制。
const int DEC_NUM = 10;
const int OCT_NUM = 012; // 八进制,等价于十进制的 10
const int HEX_NUM = 0x0A; // 十六进制,等价于十进制的 10
(4)浮点型常量
浮点型常量用于存储小数值。浮点型常量可以是单精度或双精度。
const float FLOAT_NUM = 1.23f;
const double DOUBLE_NUM = 3.1415926;
(5)布尔常量
布尔常量用于存储真假值。布尔常量只有两个可能的值:true和false。
const bool BOOL_TRUE = true;
const bool BOOL_FALSE = false;
(6)枚举(enum)常量
枚举常量用于在程序中定义命名的整数值,可以通过以下方式定义:
enum Color {Red, Green, Blue};
上述代码定义了一个名为Color的枚举类型,其中包含三个枚举常量:Red、Green和Blue。默认情况下,这些枚举常量都会被分配一个整数值,从0开始递增。例如,在上面的示例中,Red将被分配整数值0,Green将被分配整数值1,Blue将被分配整数值2。
2.3 常量作用域
与变量类似,常量也具有作用域。常量的作用域决定了它在程序中的可见范围。
(1)局部常量
局部常量是在函数内部定义并且只能在函数内部访问的常量。当函数执行完毕后,局部常量就会被销毁。
void func()
{
const int NUM = 10; // 局部常量
// ...
}
int main()
{
func();
return 0;
}
(2)全局常量
全局常量是在函数外部定义的常量,可以在整个程序中访问。全局常量不会在函数执行完毕后被销毁,它们会在程序结束时才释放。
const int NUM = 10; // 全局常量
void func()
{
// ...
}
int main()
{
std::cout << NUM << std::endl;
return 0;
}
2.4 常量用法
(1)防止修改
常量可以防止程序中的变量值被修改。例如,在函数中使用常量来确保函数参数的值不被修改:
void func(const int& num)
{
// num = 20; // error: num 是一个常量
// ...
}
(2)常量表达式
常量表达式是指在编译时就能计算出结果的表达式。可以使用常量表达式来定义数组大小、枚举值等。
const int ARRAY_SIZE = 10;
enum Color { RED = 1, GREEN = 2, BLUE = 3 };
(3)条件编译
条件编译通常用于在不同的平台上编译代码。可以使用常量来进行条件编译。
#ifdef _WIN32
// Windows 特定代码
#endif
#ifdef __linux__
// Linux 特定代码
#endif
3. 总结
20年前学习C++语言的幼稚记录