【014】一维、二维字符数组:你不知道的C++ 字符串存储奥秘!

引言


💡 作者简介:专注分享高性能服务器后台开发技术知识,涵盖多个领域,包括C/C++、Linux、网络协议、设计模式、中间件、云原生、数据库、分布式架构等。目标是通过理论与代码实践的结合,让世界上看似难以掌握的技术变得易于理解与掌握。公众号《Lion 莱恩呀》。
👉
🎖️ CSDN实力新星,社区专家博主
👉
🔔 专栏介绍:从零到c++精通的学习之路。内容包括C++基础编程、中级编程、高级编程;掌握各个知识点。
👉
🔔 专栏地址:C++从零开始到精通
👉
🔔 博客主页:https://blog.csdn.net/Long_xu


🔔 上一篇:【013】C++数组之一维数值数组和二维数值数组
🔔 下一篇:【015】C++的函数详解

一、一维字符数组

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

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

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

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

char[6]="hello";

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

1.2、字符数组的遍历

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

char string[]="hello";
int i=0;
for(i=0;i<sizeof(string);i++)
{
	putchar(string[i]);
}

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

char string[]="hello";
cout<<string;//输出hello

char string[]="hel\0lo";
cout<<string;//输出hel

1.3、从键盘获取字符串

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

1.4、使用示例

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

#include <iostream>
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;
}

二、二维字符数组

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

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

2.1、定义

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

char arr[ROWS][COLS];

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

const int ROWS = 3;
const int COLS = 4;

char arr[ROWS][COLS];

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'}
};

(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;
    }
}

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

char str[][16]={
	{"hello"},
	{"world"},
	{"my friend!"}
}

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;
}

输出结果为:

A B C D 
E F G H 
I J K L

三、总结

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

一维字符数组:

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

二维字符数组:

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

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lion Long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值