C语言入门 Day_13 二维数组

news2024/11/21 2:38:42

目录

前言:

1.字符串

2.创建二维数组

3.使用二维数组

4.易错点 

5.思维导图


前言:

我们学习了字符类型char,我们可以用char来表示一个大写或者小写的字母,但真实应用中我们往往使用的是多个字符组成的一个单词或者句子。

这种“多个字符”在C语言中叫做字符串

但是字符串和字符,整型,浮点型不同的是,字符串不是一个数据类型,它本质上是一种字符类型的数组

1.字符串

1.1

字符串是一个数组,它有两个特点:

第一个是它是字符类型;第二个是它以符号'\0'结尾

我们来创建/定义一个字符串:

char string_1[5] = {'l', 'o', 'v', 'e', '\0'};

1.数组的数据类型是字符型char

2.数组名字string_1

3.数组长度5

4.字符数组的前四个元素l,o,v,e

5.数组的最后一个元素'\0'

1.2

我们可以看到,这个字符型数组的最后一个元素是'\0'

我们再来看看怎么输出一个字符串

我们先定义一个字符串(字符数组),然后打印输出它:

char string_1[1]={'l','o','v','e','\0'};
printf("%s\n",sting_1);

1.定义一个字符串

2.字符串的输出符号%s

3.字符串名(字符数组名)string_1

1.3

在打印的时候我们使用的是%ss是字符串英文string的首字母。所以字符串的输出符号是%s

字符串是数组的一个应用,对于后期的很多编程语言比如python来说,字符串是默认支持的数据类型,但是C语言时代还并没有默认支持,而是通过一维字符型数组的形式来代表字符串的

之前我们学习的数组包括字符串,都是一维数组,因为它只有一个索引/下标,也就是只有一个“维度”,C语言还有二维数组的机制。

int number_list[10];
float  float_list[6];
char string_a[20];

2.创建二维数组

2.1

一维数组是一个线性表的话,一个索引/下标对应一个数据;

二维数组可以理解为一个行列表,一个行索引加上一个列索引可以对应一个数据。

2.2

我们来定义一个二维数组,这个二维数组是整型的

int double_list[2][2]={{1,2},{3,4}};


1.二维数组的数据类型,int

2.二维数组名  double_list

3.二维数组的第一个索引/下标   [2]

4.二维数组的第二个索引/下标   [2]

int double_list[2][2]={{1,2},{3,4}};


5.二维数组的数组元素   {1,2},{3,4}

6.二维数组的“第一行”数据

7.二维数组的“第二行”数据

2.3

二维数组里面的第一个下标表示哪一行,是横着的行

eg:这里的[0][0]是1,[0][1]是2,这是第一行;[1][0]是3,[1][1]是4,这是第二行。

二维数组里面的第二个下标表示哪一列,是竖着的列

eg:这里的[0][0]是1,[1][0]是3,这是第一列;[0][1]是2,[1][1]是4,这是第二列。

接下来我们来学习二维数组的使用,使用的时候我们心里也是想着一张二维的行列表就行了。

3.使用二维数组

3.1

我们先来看看二维数组的读取和访问。

一个二维整型数组,挨个打印它的数组元素:

int two_number_list[2][2]={{1,2},{3,4}};
printf("%s\n",two_number_list[0][0]);
printf("%s\n",two_number_list[0][1]);
printf("%s\n",two_number_list[1][0]);
printf("%s\n",two_number_list[1][1]);

1.创建二维数组并赋值

2. [0][0]  打印二维数组的第一行第一列的元素 1

3. [0][1]  打印二维数组的第一行第二列的元素  2

4. [1][0]  打印二维数组的第二行第一列的元素   3

4. [1][1]  打印二维数组的第二行第一列的元素   4

3.2

修改二维数组元素的方法和一维数组一样,也是直接找到元素位置进行赋值就可以了:

float two_float_list[2][2]={{1.0,2.0},{3.0,4.0}};
two_float_list[0][0]=10.10;
two_float_list[0][1]=20.20;
two_float_list[1][0]=30.30;
two_float_list[1][1]=40.40;

1. 定义一个二维数组 

2. two_float_list[0][0] = 10.10  修改第一行第一列的数据

3. two_float_list[0][1] = 20.20  修改第一行第二列的数据

4. two_float_list[1][0] = 30.30  修改第二行第一列的数据

5. two_float_list[1][1] = 40.40  修改第二行第二列的数据

3.3

二维数组和一维数组的使用方式其实是一模一样的,难点在于二维数组里面的数组元素所在的位置,我们需要记住第一个下标代表行,第二个下标代表列,这样就方便记忆了。

二维数组的访问限制和一维数组类似,不能超过下标的范围,这种超过下标的范围的行为,还有个专业术语叫做越界。就是数组和人一样都需要有边界感,人没有边界感,其他人会愤怒;数组没有边界感,程序会报错

二维数组的使用场景其实大部分都可以被一维数组取代,因为都是存储数据,二维数组可以被一个很长的一维数组达到同样的存储数据的效果。

以至于后面的编程语言很多都取消了二维数组的设定,只保留了一维数组(又叫数组或者列表)。

4.易错点 

eg:

C语言没有字符串类型,所以我们要把字符串放入字符数组中;

字符串的结束符号是\0 ,所以字符串长度比字符总长度多1;

字符串的输出符号是%s

eg:

 二维数组的行下边和列下标都是从0开始的;

数组大小由数组定义时的[4][5]决定——即4行5列,可以存储20个数。

5.思维导图

在撰写这篇文章时,我参考了《白纸编程》这个app的观点和思想,我要感谢他们对我的启发和帮助。

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

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

相关文章

Linux gdb单步调试的原理

文章目录 一、demo演示二、原理分析参考资料 一、demo演示 .section .data message:.string "Hello, World!\n" len . - message.section .text .globl _start _start:# 调用 write() 函数输出 "Hello, World!"mov $1, %rax # 系统调用号为 1…

海域可视化监管:浅析海域动态远程视频智能监管平台的构建方案

一、方案背景 随着科技的不断进步,智慧海域管理平台已经成为海洋领域监管的一种重要工具。相比传统的视频监控方式,智慧海域管理平台通过建设近岸海域视频监控网、海洋环境监测网和海上目标探测网络等,可实现海洋管理的数字化转型。 传统的…

『好书推荐』|《Effective软件测试》

作者简介 《Effective软件测试》 是一本由清华大学出版社出版的图书,作者是[荷]毛里西奥阿尼什(Maurcio Aniche),译者是朱少民、李洁、张元。是2023年6月新推出的一本书籍。 Maurcio Aniche博士是荷兰代尔夫特理工大学软件工程系的…

页面页脚部分CSS分享

先看效果&#xff1a; CSS部分&#xff1a;&#xff08;查看更多&#xff09; <style>body {display: grid;grid-template-rows: 1fr 10rem auto;grid-template-areas: "main" "." "footer";overflow-x: hidden;background: #F5F7FA;min…

使用LightPicture开源搭建私人图床:详细教程及远程访问配置方法

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…

urllib库

目录 1、简介 2、请求模块 3、解析模块 1、简介 urllib是python内置的标准库&#xff0c;无需下载&#xff0c;导入即可使用。 2、请求模块 urllib包里有一个request模块 from urllib import request# 1.request模块# 1.1发送网络请求 # urlopen() : 打开url地址 resp re…

进程的概念、组成、特征

1.概念 进程是操作系统进行资源分配的最小的单位。 2.组成 进程由PCB、程序段、数据段组成。PCB是操作系统需要的&#xff0c;而程序段和数据段是用户所需要的。 PCB是一种数据结构&#xff0c;操作系统所需的进程资源都存储在PCB中&#xff0c;PCB也是进程存在的唯一标识。…

【快应用】后台运行的快应用如何自动前台打开

【关键词】 Onhide、router、后台 【问题背景】 快应用退到后台运行后&#xff0c;隔几秒钟后&#xff0c;会自动打开跳转到某个页面&#xff0c;这种情形应该如何去定位处理&#xff1f; 【问题分析】 退到后台运行&#xff0c;再自动拉起看似很诡异&#xff0c;以为是快应…

Autofac使用(3)---AOP支持

1、Nuget引入程序集 2、扩展IInterceptor public class CusotmInterceptor : IInterceptor{/// <summary>/// 切入者逻辑/// /// 使用了Intercept 方法把 要调用的Call方法给包裹起来了/// </summary>/// <param name"invocation"></param>p…

架构设计基础设施保障IaaS弹性伸缩和无服务器计算

目录 1 高可用弹性伸缩实践2 无服务器计算&#xff08;FaaS&#xff09; 1 高可用弹性伸缩实践 背景 弹性伸缩是云服务架构的重要优势&#xff0c;能够很好的解决高并发场景下的性能瓶颈&#xff0c; 同时节省运营成本。 在 IaaS 端&#xff0c;能够弹性伸缩的最实用的产品形…

AIoT+5G改变智慧城市:揭秘智慧公厕的奇妙魅力

AIoT5G的新型智慧城市应用带来了智慧公厕的全新体验。通过智能监测、高速网络、智能调控、智慧管理等技术应用&#xff0c;公厕的舒适性、便捷性和智慧化程度得到了极大提升。可以看到的是&#xff0c;智慧公厕正逐渐激活智慧城市的生活场景&#xff0c;为城市居民带来更好的生…

无需租用云服务器:使用Linux本地搭建web服务并实现内网穿透发布公网访问的详细教程

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道&#xff0c;指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 前言 在web项目中,部署的web站点需要被外部访问,则…

Mac电脑其他文件占用超过一大半的内存如何清理?

mac的存储空间时不时会提示内存已满&#xff0c;查看内存占用比例最大的居然是「其他文件」&#xff0c;「其他文件」是Mac无法识别的格式文件或应用插件扩展等等...如果你想要给Mac做一次彻底的磁盘空间清理&#xff0c;首当其冲可先对「其他文件」下手&#xff0c;那么我们该…

Mactracker for mac,让您轻松掌握Mac电脑硬件信息的利器

Mactracker for mac是一款运行在MacOS平台上的Mac硬件信息查询工具。它能够方便地显示您电脑所有硬件的信息&#xff0c;包括处理器速度、内存、光盘驱动器、图形卡、支持的macOS版本和扩展选项等。此外&#xff0c;它还提供了有关Apple鼠标、键盘、显示器、打印机、扫描仪、数…

TensorFlow(R与Python系列第四篇)

目录 一、TensorFlow介绍 二、张量 三、有用的TensorFlow运算符 四、reduce系列函数实现约减 1-第一种理解方式&#xff1a;引入轴概念后直观可理 2-第二种理解方式&#xff1a;按张量括号层次的方式 参考&#xff1a; 一、TensorFlow介绍 TensorFlow是一个强大的用于数…

通过HFS低成本搭建NAS,并内网穿透实现公网访问

文章目录 前言1.下载安装cpolar1.1 设置HFS访客1.2 虚拟文件系统 2. 使用cpolar建立一条内网穿透数据隧道2.1 保留隧道2.2 隧道名称2.3 成功使用cpolar创建二级子域名访问本地hfs 总结 前言 云存储作为一个新概念&#xff0c;在前些年炒的火热&#xff0c;虽然伴随一系列黑天鹅…

打不开github,解决方案

国内加载Githup会很慢&#xff0c;有时候会自己连接超时进不去&#xff0c; 那么如何访问呢&#xff0c;下面就带大家来一起操作 这篇文章借鉴于&#xff08;解决国内 github.com 打不开的最最最准确方法_杨大脸I的博客-CSDN博客&#xff09; 原作者是它&#xff0c;我这里也是…

同步推送?苹果计划本月推出 iOS17和iPadOS17,你的手机支持吗?

据报道&#xff0c;苹果公司计划在本月推出 iOS 17 和 iPadOS 17 正式版更新。与去年不同的是&#xff0c;这次更新将同时发布&#xff0c;而不是分别发布。根据彭博社的一位消息人士马克・古尔曼的说法&#xff0c;苹果公司认为 iOS 17 和 iPadOS 17 的第八个测试版已经非常接…

若伊代码分析(前端 vue2 登录页)

目录 前端项目搭建 项目调整及element引入 登录界面样式 获取验证码 全局变量 vue中利用.env文件存储全局环境变量&#xff0c;以及配置vue启动和打包命令 配置.env文件 获取.env中的全局变量 实际用处 --------项目代码------- 跨域配置 配置代理方式一 配置代理…

更健康舒适更科技的照明体验!书客SKY护眼台灯SUKER L1上手体验

低价又好用的护眼台灯是多数人的需求&#xff0c;很多人只追求功能性护眼台灯&#xff0c;显色高、无频闪、无蓝光等基础需求。但是在较低价格中很难面面俱到&#xff0c;然而刚发布的SUKER书客L1护眼台灯却是一款不可多得的性价比护眼台灯&#xff0c;拥有高品质光源&#xff…