Menu
CoddyTech

字符串作为字符数组

本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 12 课,共 63 课。

在 C 中,没有像其他编程语言中那样内置的字符串数据类型。相反,字符串是以字符数组的形式表示的。理解这个基本概念对于掌握 C 语言如何处理文本至关重要。

C 中的字符串就是存储在连续内存位置中的一串字符。要创建字符串,你需要声明一个足够大的字符数组,以容纳所需的所有字符,并额外留出一个位置,用于存放特殊的终止字符。

char greeting[6];  // 可容纳 5 个字符和一个终止符
char message[20]; // 最多可容纳 19 个字符和一个终止符

处理字符串最方便的方法是在声明数组时,直接用字符串字面量初始化它。C 会自动处理将每个字符存储到数组中的细节:

char greeting[6] = "Hello";
// 这里存储了:'H'、'e'、'l'、'l'、'o',以及一个特殊的结束符

使用字符串字面量初始化时,你也可以省略大小说明,让 C 自动确定数组大小:

char greeting[] = "Hello";  // C 会自动将其大小设为 6

理解字符串是字符数组这一点很重要,因为这能解释 C 如何处理文本数据,并为你使用操作这些字符数组的字符串处理函数做好准备。

challenge icon

挑战

简单

编写一个 C 程序,演示如何创建和使用字符数组来存储字符串。你的程序应当:

  1. 声明一个名为 greeting 的字符数组,确保它有足够的空间存储字符串 "Hello"(记得为 null 终止符预留空间)
  2. 使用字符串字面量 "Hello" 初始化 greeting 数组
  3. 声明第二个字符数组,名为 message,包含 20 个元素
  4. 使用字符串字面量 "Welcome" 初始化 message 数组
  5. 声明第三个字符数组,名为 word,不指定大小,并通过使用 "Programming" 初始化它,让 C 自动确定数组大小
  6. 使用 printf 和 %s 格式说明符打印这三个字符串
  7. 使用 sizeof 打印每个数组的大小,以展示每个字符数组占用的内存

你的输出应按以下格式显示结果:

greeting: Hello
message: Welcome
word: Programming
Size of greeting: 6
Size of message: 20
Size of word: 12

这个挑战会检验你对以下内容的理解:如何声明字符数组来存储字符串、将字符串字面量赋给字符数组时如何自动添加 null 终止符,以及初始化时省略大小说明后 C 如何自动计算数组大小。

亲手试试

#include <stdio.h>

int main() {
    // TODO:在这里编写你的代码
    // 按挑战要求声明并初始化字符数组
    
    // 打印字符串及其大小
    printf("greeting: %s\n", greeting);
    printf("message: %s\n", message);
    printf("word: %s\n", word);
    printf("Size of greeting: %lu\n", sizeof(greeting));
    printf("Size of message: %lu\n", sizeof(message));
    printf("Size of word: %lu\n", sizeof(word));

    return 0;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C 在线编译器