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

相关文章
|
2月前
|
C语言 C++
实现两个变量值的互换[C语言和C++的区别]
实现两个变量值的互换[C语言和C++的区别]
26 0
|
4月前
|
存储 安全 C++
C++:指针引用普通变量适用场景
指针和引用都是C++提供的强大工具,它们在不同的场景下发挥着不可或缺的作用。了解两者的特点及适用场景,可以帮助开发者编写出更加高效、可读性更强的代码。在实际开发中,合理选择使用指针或引用是提高编程技巧的关键。
39 1
|
4月前
|
C++
【学习笔记】【C/C++】 c++字面值常量
【学习笔记】【C/C++】 c++字面值常量
46 1
|
3月前
|
JavaScript 前端开发 Java
通过Gtest访问C++静态、私有、保护变量和方法
通过Gtest访问C++静态、私有、保护变量和方法
96 0
|
6月前
|
安全 C++
C++一分钟之-互斥锁与条件变量
【6月更文挑战第26天】在C++并发编程中,`std::mutex`提供互斥访问,防止数据竞争,而`std::condition_variable`用于线程间的同步协调。通过`lock_guard`和`unique_lock`防止忘记解锁,避免死锁。条件变量需配合锁使用,确保在正确条件下唤醒线程,注意虚假唤醒和无条件通知。生产者-消费者模型展示了它们的应用。正确使用这些工具能解决同步问题,提升并发性能和可靠性。
69 4
|
6月前
|
安全 数据库连接 C++
C++一分钟之-C++中的常量与宏定义
【6月更文挑战第18天】**C++编程中,常量(`const`和`constexpr`)确保值不变,用于配置、计算和逻辑控制。宏定义是预处理阶段的文本替换,适用于条件编译和简化代码。注意`const`的正确使用,避免过度的`const_cast`。宏可能导致命名冲突、副作用和类型安全问题,应谨慎使用。优选类型安全的常量定义,以提升代码质量和可维护性。**
84 5
|
6月前
|
存储 C++ 容器
C++一分钟之-变量与数据类型入门
【6月更文挑战第18天】**C++编程基础:变量与数据类型概览** 了解变量(存储数据的容器)和数据类型是编程入门的关键。声明变量如`int age = 25;`,注意初始化和类型匹配。基本数据类型包括整型(int等)、浮点型(float、double)、字符型(char)和布尔型(bool)。理解类型范围和精度,使用字面量后缀增强可读性。深入学习数组、指针、结构体和类,以及动态内存管理,避免数组越界和内存泄漏。不断实践以巩固理论知识。
45 1
|
5月前
|
C++
【C++】string类的使用④(常量成员Member constants)
C++ `std::string` 的 `find_first_of`, `find_last_of`, `find_first_not_of`, `find_last_not_of` 函数分别用于从不同方向查找目标字符或子串。它们都返回匹配位置,未找到则返回 `npos`。`substr` 用于提取子字符串,`compare` 则提供更灵活的字符串比较。`npos` 是一个表示最大值的常量,用于标记未找到匹配的情况。示例代码展示了这些函数的实际应用,如替换元音、分割路径、查找非字母字符等。
|
6月前
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
49 0
|
7月前
|
存储 安全 编译器
c++变量类型
c++变量类型
49 1