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

news2024/11/28 0:39:12

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KVM虚拟化技术学习-基础入门

1.虚拟化技术概述 虚拟化[Virtualization]技术最早出现在 20 世纪 60 年代的 IBM ⼤型机系统&#xff0c;在70年代的 System 370 系列中逐渐流⾏起来&#xff0c;这些机器通过⼀种叫虚拟机监控器[Virtual Machine Monitor&#xff0c;VMM]的程序 在物理硬件之上⽣成许多可以运⾏…

Windows下Pycharm2022如何使用Centos7中的虚拟环境 venv 实现文件实时同步

前期准备 Windows 与 Centos 怎么搞共享文件夹&#xff0c;之前写了一篇&#xff0c;这里直接引用 hyperf 关于配置yasd调试器进行远程调试 swoole sdebug调试 windowlinux 共享文件夹开发汇总_森叶的博客-CSDN博客yasd github下载链接&#xff1a;https://github.com/swoole…

redis优化

一)优雅的key结构: redis中的key虽然可以自定义&#xff0c;但是最好遵循下面的几个最佳实践约定: 1)遵循基本格式:业务名称:数据名字:ID&#xff1b; 2)长度不要超过44字节&#xff0c;key所占的字节数越小&#xff0c;占用空间越小&#xff0c;越短越好&#xff1b; 3)不要包…

this 内存原理

&#x1f49f;这里是CS大白话专场&#xff0c;让枯燥的学习变得有趣&#xff01; &#x1f49f;没有对象不要怕&#xff0c;我们new一个出来&#xff0c;每天对ta说不尽情话&#xff01; &#x1f49f;好记性不如烂键盘&#xff0c;自己总结不如收藏别人&#xff01; &#x1f…

Spring Cloud Alibaba - Nacos

目录 一、Spring Cloud Alibaba 1、简介 二、Nacos 1、Nacos介绍 2、什么是Nacos&#xff1f; 3、为何使用Nacos&#xff1f; 4、Nacos下载和安装 4.1、启动 Linux/Unix/Mac Windows 5、Nacos代替Eureka 6、Nacos服务注册中心 一、Spring Cloud Alibaba Spring Cl…

【循环自相关和循环谱系列7】OFDM循环自相关推导分析、时间参数估计原理仿真及某无人机实际图传信号验证(含矩形/非矩形、有无循环前缀等情况)

重要声明:为防止爬虫和盗版贩卖,文章中的核心代码可凭【CSDN订阅截图或公z号付费截图】私信免费领取,一律不认其他渠道付费截图! 说明:本博客含大量公式推导分析,比较烧脑,需要有一定的数学基础,高等数学、信号与系统等! 这是循环自相关和循环谱系列的第七篇文章了…

基于SpringBoot+Vue测试用例管理系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着信息技术的不断发…

【Vue】学习笔记-Vue中的Ajax配置代理

回顾 常用的发送Ajax请求的方法有哪些&#xff1f; xhr​​ new XMLHttpRequest() xhr.open()、xhr.send()(真正开发中很少用到&#xff0c;太麻烦了&#xff0c;我们一般使用的都是他的二次封装) ​jQuery​​ 其对xhr有二次封装 . g e t ( ) 、 .get()、 .get()、.post ​…

【一起啃书】《机器学习》第八章集成学习

文章目录 第八章 集成学习8.1 个体与集成8.2 Boosting8.3 Bagging与随机森林8.4 结合策略8.5 多样性 第八章 集成学习 8.1 个体与集成 集成学习通过构建并结合多个学习器来完成学习任务&#xff0c;有时也被称为多分类器系统、基于委员会的学习等&#xff0c;下面是集成学习的…

Mac下好用的日记、电子书阅读器、RSS订阅软件​

Mac下好用的日记笔记本、电子书阅读器和RSS订阅、播客订阅等软件推荐。我们收录到 Mac下好用的日记、电子书阅读器、RSS订阅软件​http://www.webhub123.com/#/home/detail?pLZPL-2ofIu 收录效果如下 ​也可以使用分组视图来查看各类软件网址 ​ 登录后可一键保存全部软件网址…

Java 集合 - Queue 接口

文章目录 1.Queue 接口2.LinkedList3.ArrayDeque4.PriorityQueue5.总结 队列是一种特殊的线性数据结构&#xff0c;在数据的尾部插入元素&#xff0c;在数据的头部删除元素。通常以 FIFO&#xff08;先进先出&#xff09;的方式存储和访问数据。Java 中提供了 Queue 接口来实现…

element-ui对话框dialog详解

效果展示 先给大家展示一下大致的样式 代码 <el-dialog draggable destroy-on-close v-model"dialogAddVisible" title"添加用户" width"35%" center><el-form :inline"true" :model"addFormInfo" status-icon …

Java中的String数据类型,String类(字符串)详解

目录 第一章、String概述1&#xff09;String是什么2&#xff09;String长什么样3&#xff09;String的构造方法(声明方式) 第二章、String类的详解1&#xff09;String底层是什么2&#xff09;字符串存储的内存原理/字符串常量池(String Constant Pool&#xff09;3&#xff0…

C语言-【指针二】-【指针运算/指针和数组】

好久不见吖&#xff0c;好啦&#xff0c;言归正传&#xff0c;这篇文章接着上篇文章的尾巴接着介绍指针相关知识哦&#xff01; 一.指针运算 &#xff08;1&#xff09;指针-整数 &#xff08;2&#xff09;指针-指针 &#xff08;3&#xff09;指针的关系运算 接下来&…

Apache Kafka - 高性能原因探究

文章目录 概述图解 概述 Kafka 的高性能主要依赖于以下几个关键因素: 分布式架构:Kafka 采用分布式集群架构,可以水平扩展到上万个节点,支持每秒处理百万级消息。持久化存储:Kafka 使用文件系统持久化存储消息,避免了数据库成为性能瓶颈,大大提高了吞吐量。顺序读写:Kafka 的…

计算机视觉:卷积核的运行过程

本文重点 我们前面从直观角度理解了卷积神经网络的卷积在特征提取的作用,本节课程我们从数学角度来看一下,卷积是如何计算的? 计算步骤 1. 将卷积核与输入图像的某一部分进行逐元素相乘。 2. 将相乘后的结果求和,得到卷积核在该部分的输出值。 3. 重复以上步骤,将卷积核…

达梦8逻辑备份导出导入dexp/dimp

逻辑导出&#xff08;dexp&#xff09;和逻辑导入&#xff08;dimp&#xff09;是 DM 数据库的两个命令行工具&#xff0c;分别用来实现对 DM 数据库的逻辑备份和逻辑还原。逻辑备份和逻辑还原都是在联机方式下完成&#xff0c;联机方式是指数据库服务器正常运行过程中进行的备…

数据结构作业4-图

图数据结构的小练习&#xff1a; 文章目录 数据结构作业4-图3 对图1所示的带权无向图。&#xff08;40分&#xff09;解&#xff1a; 4 对于图1所示的带权无向图。&#xff08;20分&#xff09;解&#xff1a; 5 已知带权有向图如下图所示&#xff0c;请利用Dijkstra算法从顶点…

基于操作系统的基础IO

1.c语言中的文件输入输出 在观看本章节的时候&#xff0c;大家可以去看看之前c语言的文件输入输出的有关博客。 好那么废话不多说之间进入本章正题: 我们都知道c程序默认会打开三个输入输出流&#xff1a; stdin&#xff1a;相当于键盘 stdout&#xff1a;相当于显示器 st…

【Linux】基本指令(四)

目录 &#x1f348;一.sort指令&#x1f348; &#x1f349;二.uniq指令&#x1f349; &#x1f34a;三.wc指令&#x1f34a; &#x1f34b;四.which指令&#x1f34b; &#x1f34e;五.whereis指令&#x1f34e; &#x1f34f;六.top指令&#x1f34f; &#x1f350;七…