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

C++数组之一维字符数组和二维字符数组

  • 引言
  • 一、一维字符数组
    • 1.1、一维字符数组的初始化
    • 1.2、字符数组的遍历
    • 1.3、从键盘获取字符串
    • 1.4、使用示例
  • 二、二维字符数组
    • 2.1、定义
    • 2.2、初始化
    • 2.3、访问
  • 总结

引言


💡 作者简介:专注于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'};

(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]
  • 初始化方式:直接赋值或循环赋值
  • 访问方式:使用双重循环遍历每个元素,先遍历行数再遍历列数

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/23485.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

结构体 --- C语言

目录 1.结构体的声明 2.结构体变量的定义和初始化 3.结构体成员访问 4.结构体传参 1.结构体的声明 结构是一些值的集合&#xff0c;这些称为成员变量&#xff0c;结构的每个成员可以是不同类型的变量。 而数组是一组类型相同的元素的集合。 生活中的描述 人&#xff1a;名…

伪类元素的用法总结

1:自闭标签不适用伪类元素 自闭合标签 1. 一般标签   由于有开始符号和结束符号&#xff0c;因此可以在内部插入其他标签或文字。 <p>“绿叶&#xff0c;给你初恋般的感觉。”</p> 2. 自闭合标签   由于只有开始符号而没有结束符号&#xff0c;因此不可以在内…

亚马逊云科技宣布全面推出Amazon Aurora I/O-Optimized集群配置

自亚马逊云科技Amazon Aurora于2014年推出以来&#xff0c;成千上万的客户选择Aurora来运行其要求最严苛的应用程序。Aurora在全球范围内提供无与伦比的高性能和可用性&#xff0c;完全兼容MySQL和PostgreSQL&#xff0c;成本仅为商用数据库的十分之一。 许多亚马逊云科技客户受…

C# 队列(Queue)

目录 一、概述 二、基本的用法 1.添加元素 2.取出元素 1&#xff09;Dequeue 方法 2&#xff09;Peek 方法 3.判断元素是否存在 4.获取队列的长度 5.遍历队列 6.清空容器 7.Queue 泛型类 三、结束 一、概述 表示对象的先进先出集合。 队列和其他的数据结构一样&a…

微服务解码:揭示API的优势挑战与最佳实践

在当今快节奏的软件开发环境中&#xff0c;微服务已成为一种流行的架构模式。但微服务到底是什么&#xff1f;简而言之&#xff0c;微服务是一种将应用程序构建为松耦合、细粒度服务集合的方式&#xff0c;这些服务通过轻量级协议进行通信。这种架构风格使团队能够独立开发和部…

es Elasticsearch 六 java api spirngboot 集成es

目录 Java restApi Springboot 集成es 新增-同步 新增-异步 增删改查流程 _bulk 批量操作 Java restApi Springboot 集成es 新增-同步 Testpublic void te2() throws IOException {System.out.println(1);IndexRequest ir new IndexRequest("test");ir.id(&qu…

边缘计算AI硬件智能分析网关V1版的接入流程与使用步骤

我们的AI边缘计算网关硬件——智能分析网关目前有两个版本&#xff1a;V1版与V2版&#xff0c;两个版本都能实现对监控视频的智能识别和分析&#xff0c;支持抓拍、记录、告警等&#xff0c;在AI算法的种类上和视频接入上&#xff0c;两个版本存在些许的区别。V1的基础算法有人…

独立站怎么搭建?搭建一个独立站的10个建议和步骤

要搭建一个独立站&#xff08;也称为个人网站或博客&#xff09;&#xff0c;以下是一些建议和步骤&#xff1a; 选择一个合适的域名&#xff1a;选择一个简洁、易记且与您网站内容相关的域名。确保域名可用&#xff0c;并注册该域名。 寻找一个合适的主机服务提供商&#xff…

Nautilus Chain上线主网,为DeFi和流支付的未来构建基础

近日&#xff0c;加密行业权威平台 Coinmarketcap 发表了一篇名为“Zebec 模块化 Layer3 链 Nautilus Chain上线主网&#xff0c;为 DeFi 和流支付的未来构建基础”的文章&#xff0c;文中对 Zebec 生态公链 Nautilus Chain 的生态进展进行了简要的报道&#xff0c;并对其进行了…

服了呀,被现在的00后卷麻了....

现在的小年轻真的卷得过分了。前段时间我们公司来了个00年的&#xff0c;工作没两年&#xff0c;跳槽到我们公司起薪18K&#xff0c;都快接近我了。后来才知道人家是个卷王&#xff0c;从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天&#xff0c;原来这位小老弟家里条…

SAP MM采购申请审批-成本中心

抬头审批的采购申请中行项目里的成本中心必须是同一个! 1、创建特性成本中心CT04 2、把特性分配给类CL02 3、维护分类审批策略 这些成本中心都可以使用&#xff0c;如果是单项就需要再CT04维护成多值。 如下采购申请&#xff0c;系统找不到审批策略, 2个行项目中&#xff0c;成…

复习之[ 查询帮助 ] 和 [ 输入输出管理 ]

1.查询命令用途--whatis # whatis 命令 : 查询命令的用法 -如果结果出现nothing , 有两种情况&#xff1a; &#xff08;1&#xff09;查询数据库没有更新&#xff0c;此时输入命令 mandb更新数据库即可。 &#xff08;2&#xff09;查询的命令不存在。 2.获得命令的简要帮…

springcloud-alibaba (04)Gateway与Nacos结合使用

Gateway与Nacos结合使用 &#x1f389;欢迎来到这里&#xff0c;今天我将为大家介绍如何将Spring Cloud Gateway和Nacos结合使用&#xff0c;实现一个高效稳定的服务网关&#xff01;在微服务架构中&#xff0c;API网关是必不可少的一部分&#xff0c;它提供了路由请求、负载均…

AIGC:【LLM(一)】——LoRA微调加速技术

文章目录 一.微调方法1.1 Instruct微调1.2 LoRA微调 二.LoRA原理三.LoRA使用 一.微调方法 Instruct微调和LoRA微调是两种不同的技术。 1.1 Instruct微调 Instruct微调是指在深度神经网络训练过程中调整模型参数的过程&#xff0c;以优化模型的性能。在微调过程中&#xff0c…

抖音账号运营技巧,让你的短视频更火爆

抖音是目前最火爆的短视频平台之一&#xff0c;拥有着庞大的用户群体和广阔的市场前景。在这个平台上&#xff0c;每天都有大量的用户在发布自己的短视频内容&#xff0c;让自己的账号脱颖而出并吸引更多的粉丝&#xff0c;成为每个用户所追求的目标。下面就来介绍一些抖音账号…

QDir拼接路径解决各种斜杠问题

一般在项目中经常需要组合路径,与其他程序进行相互调用传递消息通信。 经常可能因为多加斜杠、少加斜杠等问题导致很多问题。 为了解决这些问题,我们可以使用QDir来完成路径的拼接,不直接拼接字符串。 QDir的静态方法QDir::cleanPath() 是为了规范化路径名的,在使用QDir组…

Atlassian数据迁移攻略:迁移前必备须知

到2024年2月&#xff0c;Atlassian将终止对Server产品及插件的所有支持。是时候制定您的迁移计划了——Atlassian为您提供两种迁移选择&#xff0c;一是本地部署的数据中心版本&#xff0c;中国用户25人以上即可使用&#xff0c;二是云版。作为Atlassian全球白金合作伙伴&#…

Mybatisplus真实高效批量插入附容错机制

文章目录 概要优化技术细节小结 概要 提示&#xff1a;mybatisplus自带真实批量插入 在mybatisplus已知常用批量插入为继承Iservice里的saveBatch方法和saveOrUpdateBatch方法&#xff0c; 进入源码可知&#xff0c;此两种方法的插入均为单条插入,如图: 其中可看出&#xff0…

JavaScript之DOM基础

1. 初识DOM DOM: 文档对象模型 是W3C组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口。 w3c已经定义了一系列的DOM接口&#xff0c;通过这些DOM接口可以改变网页的内容&#xff0c;结构和样式。 DOM树&#xff1a;文档&#xff1a;一个页面就是一个文档, DOM中使用d…

LeetCode_DFS_困难_1377.T 秒后青蛙的位置

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一棵由 n 个顶点组成的无向树&#xff0c;顶点编号从 1 到 n。青蛙从 顶点 1 开始起跳。规则如下&#xff1a; 在一秒内&#xff0c;青蛙从它所在的当前顶点跳到另一个未访问过的顶点&#xff08;如果它…