# 变量声明与初始化

URL: https://caijiao.org/cpp/basic/variables
Source: docs/cpp/basic/variables.md
Description: 本节将介绍 C++ 中的变量声明和初始化方法，帮助你理解如何声明变量并赋予初始值，以及不同的初始化方式。

在 C++ 中，变量声明是为程序中的数据提供一个名称和类型的过程，初始化则是赋予该变量初始值。正确的声明与初始化是编写高效、可靠程序的基础。

## 变量声明

声明变量时，我们需要指定其数据类型和名称。例如：

```cpp
int age;  // 声明一个整型变量 age
````

这条语句声明了一个类型为 `int` 的变量 `age`，但并没有给它赋值。在未初始化前，变量的值是未定义的。

### 多个变量声明

C++ 允许在同一条语句中声明多个变量，使用逗号分隔它们的类型和名称：

```cpp
int x, y, z;  // 声明多个整型变量
```

### 常量声明

如果一个变量的值在程序运行过程中不需要更改，可以将其声明为常量，使用 `const` 关键字。例如：

```cpp
const int daysInWeek = 7;  // 常量声明
```

此声明确保 `daysInWeek` 变量的值不会在程序运行过程中发生变化。

## 变量初始化

初始化是给变量赋予初始值的过程。在 C++ 中，有几种不同的初始化方式。

### 直接初始化

直接初始化是通过构造函数或类似的方式给变量赋值。例如：

```cpp
int x(10);  // 使用括号初始化
```

这种方法适用于大多数类型，包括基本数据类型和自定义类类型。

### 括号初始化

C++11 引入了统一初始化方式，使用花括号 `{}` 来初始化变量，避免了某些潜在的类型转换问题。

```cpp
int y{5};  // 使用花括号初始化
```

### 默认初始化

C++ 中的一些变量会自动初始化，具体行为取决于变量的类型和作用域。例如，局部变量不会被默认初始化，而类成员变量如果是基本类型会进行默认初始化。

```cpp
int a = 0;  // 初始化变量 a 为 0
```

### 复制初始化

在声明时通过赋值操作符进行初始化，也被称为复制初始化：

```cpp
int z = 15;  // 通过赋值初始化
```

### 引用变量初始化

引用变量在声明时必须被初始化，因为引用变量必须绑定到某个已有的对象或值。例如：

```cpp
int a = 10;
int& ref = a;  // 引用变量必须初始化
```

### 动态内存分配与初始化

有时我们需要使用动态内存分配来创建变量。在这种情况下，通常会使用 `new` 关键字来动态分配内存并初始化变量。

```cpp
int* ptr = new int(10);  // 动态分配内存并初始化
```

## 小结

* **变量声明**：是为变量指定数据类型和名称的过程。
* **变量初始化**：是为变量赋予初始值的过程，C++ 支持多种初始化方式，如直接初始化、括号初始化、复制初始化和引用变量初始化等。
* **常量声明**：通过 `const` 关键字声明不可修改的常量。

正确的变量声明与初始化能提高代码的可读性和程序的稳定性。
