• 【014】C++数组之一维字符数组和二维字符数组


    引言


    💡 作者简介:专注于C/C++高性能程序设计和开发,理论与代码实践结合,让世界没有难学的技术。包括C/C++、Linux、MySQL、Redis、TCP/IP、协程、网络编程等。
    👉
    🎖️ CSDN实力新星,社区专家博主
    👉
    🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、高级编程;掌握各个知识点。
    👉
    🔔 专栏地址:C++从零开始到精通
    👉
    🔔 博客主页:https://blog.csdn.net/Long_xu


    🔔 上一篇:【013】C++数组之一维数值数组和二维数值数组

    一、一维字符数组

    1.1、一维字符数组的初始化

    (1)逐个元素初始化(不推荐)。

    char string[]={'h','e','l','l','o'};
    
    • 1

    (2)以字符串的形式初始化(推荐)。

    char[6]="hello";
    
    • 1

    (2)两种初始化方式的区别。
    在这里插入图片描述

    1.2、字符数组的遍历

    (1)使用循环方式遍历,逐个字符操作。

    char string[]="hello";
    int i=0;
    for(i=0;i<sizeof(string);i++)
    {
    	putchar(string[i]);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    (2)使用std::cout直接输出字符串,需要字符数组的数组名,遇到 ‘\0’ 才介绍。

    char string[]="hello";
    cout<<string;//输出hello
    
    char string[]="hel\0lo";
    cout<<string;//输出hel
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.3、从键盘获取字符串

    (1)std::cin获取字符串,遇到回车或空格结束输入。
    (2)std::cin.getline获取带空格的字符串。

    1.4、使用示例

    获取一个字符串,不使用strlen函数下求字符串的长度。

    #include 
    using namespace std;
    int main()
    {
    	char str[32]={0};
    	cout<<"请输入一个字符串:";
    	cin.getline(str,sizeof(str));
    
    	// 计算字符串的长度
    	int i=0;
    	while(str[i]!='\0')
    		i++;
    	cout <<str<<" 字符串的长度: "<<i<<endl;
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    二、二维字符数组

    当我们需要存储和操作大量数据时,使用二维数组是非常方便的。C++ 中的二维字符数组可以看作是一个由多个一维字符数组组成的集合,其中每个元素都代表了一个字符。

    下面详细介绍 C++ 中二维字符数组的定义、初始化和访问方式。

    2.1、定义

    在 C++ 中定义二维字符数组需要指定行数和列数,语法格式如下:

    char arr[ROWS][COLS];
    
    • 1

    其中 ROWS 表示行数,COLS 表示列数。例如,以下代码定义了一个大小为 3 行 4 列的二维字符数组:

    const int ROWS = 3;
    const int COLS = 4;
    
    char arr[ROWS][COLS];
    
    • 1
    • 2
    • 3
    • 4

    2.2、初始化

    在定义并声明二维字符数组后,可以对其进行初始化。有两种方法可以实现初始化:

    (1)直接赋值法:

    使用花括号 {} 将初始值括起来,并按照行优先顺序将其逐个填入到数组中。例如:

    const int ROWS = 3;
    const int COLS = 4;
    
    char arr[ROWS][COLS] = {
        {'A', 'B', 'C', 'D'},
        {'E', 'F', 'G', 'H'},
        {'I', 'J', 'K', 'L'}
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    (2)循环赋值法:

    通过循环遍历每个元素并赋予初值。例如:

    const int ROWS = 3;
    const int COLS = 4;
    
    char arr[ROWS][COLS];
    
    for (int i = 0; i < ROWS; i++)
    {
        for (int j = 0; j < COLS; j++)
        {
            arr[i][j] = 'A' + i * COLS + j;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    (3)字符串赋值法。通过字符串直接赋值,例如:

    char str[][16]={
    	{"hello"},
    	{"world"},
    	{"my friend!"}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.3、访问

    访问二维字符数组的元素时需要使用双重循环,先遍历行数再遍历列数。例如,以下代码遍历了上面定义的二维字符数组并输出每个元素:

    const int ROWS = 3;
    const int COLS = 4;
    
    char arr[ROWS][COLS] = {
        {'A', 'B', 'C', 'D'},
        {'E', 'F', 'G', 'H'},
        {'I', 'J', 'K', 'L'}
    };
    
    for (int i = 0; i < ROWS; i++)
    {
        for (int j = 0; j < COLS; j++)
        {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    输出结果为:

    A B C D 
    E F G H 
    I J K L
    
    • 1
    • 2
    • 3

    总结

    C++ 中的一维字符数组和二维字符数组都是常用的数据类型,它们可以存储和操作大量字符数据。

    一维字符数组:

    • 定义格式:char arr[size]
    • 初始化方式:直接赋值或循环赋值
    • 访问方式:使用下标访问(从 0 开始)

    二维字符数组:

    • 定义格式:char arr[rows][cols]
    • 初始化方式:直接赋值或循环赋值
    • 访问方式:使用双重循环遍历每个元素,先遍历行数再遍历列数

    在这里插入图片描述

  • 相关阅读:
    C++基础——static成员
    【MySQL系列】Java的JDBC编程
    < element-UI中 el-select组件,下拉时内容无法显示滚动条 >
    Go语言实践模式 - 函数选项模式(Functional Options Pattern)
    智慧农业大数据平台:农业中的“大智慧”
    购买密封件时应注意哪些要点?
    uniapp小程序监听标签距离顶部多少距离,返回顶部效果demo(整理)
    【小程序】WXML模板语法
    CK-GW06-E00与CODESYS TCP通信
    MultiPlayerShoot----C++学习记录02人物
  • 原文地址:https://blog.csdn.net/Long_xu/article/details/130785902