字符串作为字符数组
本课属于 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 如何处理文本数据,并为你使用操作这些字符数组的字符串处理函数做好准备。
挑战
简单编写一个 C 程序,演示如何创建和使用字符数组来存储字符串。你的程序应当:
- 声明一个名为
greeting的字符数组,确保它有足够的空间存储字符串 "Hello"(记得为 null 终止符预留空间) - 使用字符串字面量 "Hello" 初始化
greeting数组 - 声明第二个字符数组,名为
message,包含 20 个元素 - 使用字符串字面量 "Welcome" 初始化
message数组 - 声明第三个字符数组,名为
word,不指定大小,并通过使用 "Programming" 初始化它,让 C 自动确定数组大小 - 使用
printf和%s格式说明符打印这三个字符串 - 使用
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;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C 在线编译器