C++系列三:变量、常量

简介: C++系列三:变量、常量


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)布尔型

布尔型变量用于存储真假值。布尔型变量只有两个可能的值:truefalse

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++语言的幼稚记录

相关文章
|
1月前
|
存储 C++ 容器
学会在 C++ 中使用变量:从定义到实践
C++中的变量是数据容器,包括`int`、`double`、`char`、`string`和`bool`等类型。声明变量时指定类型和名称,如`int myNum = 15;`。`cout`与`&lt;&lt;`用于显示变量值。常量用`const`声明,值不可变。变量名应唯一,遵循特定命名规则,常量声明时需立即赋值。
113 1
|
1月前
|
编译器 C++
C++ 双冒号::开头的语法,::变量名,获取全局作用域变量
C++ 双冒号::开头的语法,::变量名,获取全局作用域变量
17 0
|
3天前
|
人工智能 C++
【重学C++】【指针】轻松理解常量指针和指针常量
【重学C++】【指针】轻松理解常量指针和指针常量
9 0
|
19天前
|
存储 程序员 编译器
C++注释、变量、常量、关键字、标识符、输入输出
C++注释、变量、常量、关键字、标识符、输入输出
|
1月前
|
安全 算法 编译器
【C++ 基础 ()和{}括号】深入探索 C++ 的变量初始化:括号和大括号的奥秘
【C++ 基础 ()和{}括号】深入探索 C++ 的变量初始化:括号和大括号的奥秘
40 0
|
1月前
|
存储 算法 安全
【C++ 泛型编程 C++14 新特性】理解C++14变量模板的魅力与应用
【C++ 泛型编程 C++14 新特性】理解C++14变量模板的魅力与应用
43 2
|
1月前
|
存储 缓存 安全
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
【C/C++ 关键字 存储类说明符】C/C++ 的mutable 关键字 忽略对该数据成员的常量性检查在const函数中修改变量值
29 0
|
1月前
|
算法 Linux 调度
C++ std::condition_variable 条件变量类探索:解锁条件变量的底层原理
C++ std::condition_variable 条件变量类探索:解锁条件变量的底层原理
23 0
|
1月前
|
算法 C语言 C++
【C/C++ 关键字 类型限定符 】 C/C++ 中 const的用法:限制变量的作用域和可见性
【C/C++ 关键字 类型限定符 】 C/C++ 中 const的用法:限制变量的作用域和可见性
20 0
|
5天前
|
存储 编译器 C语言
c++的学习之路:5、类和对象(1)
c++的学习之路:5、类和对象(1)
19 0