C++中的字符数组是一种用于保存字符序列的基础数据结构。它以连续内存单元存放一个个字符,既可以表示单个字符的集合,也可以表示以空字符结尾的 C 风格字符串。对于初学者而言,理解字符数组的定义方式,不仅有助于掌握数组的基本语法,也能帮助理解字符串在内存中的真实形态。

字符数组的基本定义方式
从语法角度看,字符数组本质上就是元素类型为 char 的数组。定义时需要说明元素类型、数组名以及数组长度。数组长度可以是编译期能够确定的常量表达式,也可以在初始化时由编译器根据初始内容推导。由于 char 类型通常只占用一个字节,因此字符数组在内存中非常紧凑,适合用于缓冲区、固定长度文本以及和 C 接口交互的场景。
字符数组的定义方式并不单一。可以先声明一个固定长度的数组,再逐个赋值;也可以在定义时使用初始化列表逐个写入字符;还可以直接使用字符串字面量进行初始化。不同方式之间的差别,主要体现在数组长度是否显式指定、是否需要手动补充结束符,以及编译器是否自动计算容量。
指定长度定义字符数组
当程序明确知道需要处理的字符数量上限时,可以先指定数组长度。例如定义一个长度为 10 的字符数组,即使当前只写入两个字符,剩余空间仍然保留。这种方式适合先准备一块固定缓冲区,后续再逐步填充内容。
#include <iostream>
using namespace std;
int main() {
// 定义一个长度为 10 的字符数组
char arr[10];
// 手动写入字符
arr[0] = 'h';
arr[1] = 'i';
arr[2] = ' ';
// 输出字符数组表示的字符串
cout << arr << endl;
return 0;
}
在上述代码中,数组 arr 被定义为 10 个字符的容量。程序手动写入字符 'h'、'i' 和结束符。由于 C 风格字符串依赖结束符判断结尾,因此在手动赋值时,必须确保有效字符之后存在