C语言二维字符数组与函数编程详解

1. 二维字符型数组详解

1.1 基本概念与定义

二维字符型数组是C语言中用于存储多个字符串的数据结构。它本质上是一个数组的数组,每个元素又是一个字符数组。这种结构特别适合处理需要存储多个字符串的场景,比如学生姓名列表、商品名称集合等。

定义格式如下:

c复制char 数组名[行数][列数] = {初始化列表};

这里的"行数"表示要存储的字符串数量,"列数"表示每个字符串的最大长度(包括结尾的'\0')。例如,要存储5个最大长度为20的字符串:

c复制char names[5][21];  // 多留一个位置给'\0'

注意:列数必须足够大以容纳最长的字符串加上终止符'\0',否则会导致缓冲区溢出。

1.2 初始化方式

二维字符数组有多种初始化方式:

  1. 完全初始化
c复制char fruits[3][6] = {
    {'a','p','p','l','e','\0'},
    {'p','e','a','r','\0','\0'},
    {'b','a','n','a','n','a'}
};
  1. 字符串字面量初始化(更简洁):
c复制char fruits[3][6] = {
    "apple",
    "pear",
    "banana"
};
  1. 部分初始化(未指定元素自动初始化为0):
c复制char matrix[4][10] = {
    "hello",
    "world"
};  // 后两行全为'\0'
  1. 动态初始化(运行时赋值):
c复制char cities[5][20];
strcpy(cities[0], "Beijing");
strcpy(cities[1], "Shanghai");
// ...

1.3 访问与操作

访问二维字符数组的元素有两种方式:

  1. 单个字符访问
c复制char ch = names[2][4];  // 获取第3个字符串的第5个字符
  1. 整行(字符串)访问
c复制printf("%s", names[1]);  // 输出第2个字符串

常见操作示例:

c复制// 比较两个字符串
if(strcmp(names[0], names[1]) == 0) {
    printf("两个名字相同\n");
}

// 字符串排序(按字母顺序)
for(int i = 0; i < 4; i++) {
    for(int j = i+1; j < 5; j++) {
        if(strcmp(names[i], names[j]) > 0) {
            char temp[21];
            strcpy(temp, names[i]);
            strcpy(names[i], names[j]);
            strcpy(names[j], temp);
        }
    }
}

重要提示:直接使用赋值运算符(=)无法复制字符串,必须使用strcpy()函数。

需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。

2. 函数基础与进阶

2.1 函数的基本概念

函数是C语言中的基本模块化单元,具有以下核心优势:

  • 代码复用:避免重复编写相同

内容推荐

已经到底了哦
已经到底了哦