C语言入门 Day_12 一维数组0

目录

前言

1.创建一维数组

2.使用一维数组

3.易错点

4.思维导图


前言

存储一个数据的时候我们可以使用变量, 比如这里我们定义一个记录语文考试分数的变量chinese_score,并给它赋值一个浮点数(float)。

float chinese_scoer=98.0;
printf("语文考试分数是%f\n",chinese_scoer);

假如我们需要记录多个类似的数据,比如这里记录语文数学英语物理化学生物这6科考试的分数,我们就需要6个变量,这样的话就有点麻烦

假设我们要记录100个数据呢?全用变量的话一来变量名很多,二来代码也会很冗长,这时候我们就需要一些新的机制

float chinese_score = 98.0;
float math_score = 96.0;
float english_score = 90.0;
float physics_score = 88.0; 
float chemistry_score = 87.0;
float  organism_score = 81.0;

这里我们就要介绍一个新的存储方式——数组,

它可以一次性存储多个相同类型的数据。

如果变量就像一个盒子的话,一次可以存储一个数据;

那么数组就像一个抽屉,可以存储多个数据。

1.创建一维数组

1.1

我们创建一个有六个元素的浮点型数组用来存储成绩:

float exam_score[6]={98.0,96.0,90.0,88.0,87.0,81.0};

1. 数组的数据类型,float浮点型

2. 数组名,exam_score

3. 数组的长度是6,也就是能容纳6个数据

4. 方括号,里面写的是数组的长度

float exam_score[6]={98.0,96.0,90.0,88.0,87.0,81.0};

5.赋值符号 =

6.数组的六个元素,都是浮点型

7.数组的元素,需要用花括号括起来

8.数组中的元素用逗号,隔开

1.2

上面我们完成了数组的初始化工作,创建了一个浮点数的数组,它里面存储了六个值。我们把这些值叫做数组的元素

数组的命名规则和变量是一致的,由大小写字母,数字和下划线组成,不能由数字开头

同时,我们不仅能创建浮点数的数组,之前学过的所有数据类型的数组都可以创建,只不过需要注意的是,完成创建以后,所有数组的元素都是这个类型的。

例如:

int student_age[3]={18,19,21};

1.我们创建一个有三个元素的整型数组student_age,并进行赋值:

2.然后输入数组名字student_age:

3.填入数组的长度[3],注意使用英文的方括号[]:

int student_age[3]={18,19,21};

4.填入赋值符号= :

5.填入数组元素的花括号{}

6.填入分隔数组元素的逗号, :

1.3

完成了数组的创建/定义之后,我们就可以使用里面的数据元素了,这里的使用包括了读取修改

创建一维数组就像是做好了一个抽屉,并在抽屉中放好了东西(数据);

使用一维数组就是在这个抽屉中取出东西(数据),或者在抽屉的每个格子里面放入不同的东西(数据)。

2.使用一维数组

2.1

数组中的元素存储是有序的,

有序的意思就是数组元素是按照顺序一个一个排好的

他们都有固定的位置,方便查找和修改

下列代码就会输出1,2,3,因为我们依次打印了这个数组的第一个元素,第二个元素,第三个元素:

int int_list[3]={1,2,3};
printf("%d\n",int_list[0]);
printf("%d\n",int_list[1]);
printf("%d\n",int_list[2]);

1.创建了一个有三个元素的整型数组

2.打印数组里面的第一个元素   printf("%d\n", int_list[0])

3 数组里面的第一个元素  int_list[0]

int int_list[3]={1,2,3};
printf("%d\n",int_list[0]);
printf("%d\n",int_list[1]);
printf("%d\n",int_list[2]);

4.数组元素的位置,也是用方括号+数字表示   [0]

5.打印数组里面的第二个元素 printf("%d\n", int_list[1]);

6.打印数组里面的第三个元素  printf("%d\n", int_list[2]);

2.2

这种有序的数据结构又叫做线性表,也就是说每个元素都像一根线一样一一排列的。我们可以通过索引/下标的方式来访问数组中的元素。

2.3

我们来看看数组里面的下标,也就是方括号里面的数字

int int_list[3]=[1,2,3];
printf("%d\n",int_list[0]);
printf("%d\n",int_list[1]);
printf("%d\n",int_list[2]);

1. 方括号里面是3,表明这个数组的长度是3

2.  打印第一个元素,下标是0

3.   打印第二个元素,下标是1

4.   打印第三个元素,下标是2

2.4

我们可以注意到,在使用数组的时候,我们下标是从0开始的,比如第一个元素是int_list[0]

这是由一个C语言内在的机制决定的,因为第一个元素是在线性表的头部,所以它的位置和线性表的开头位置是重合的;

因此我们增加0的位置就能访问这个元素了,因为第一个元素就在开头。

而访问第二个元素的时候,我们需要越过第一个元素,这时候需要+1,因此第二个元素的下标是1。

2.5

比较有意思的是,从C语言开始,后面所有的编程语言在类似数组这样线性表的结构里面,都使用0来表示第一个元素。

所以久而久之这也成了程序员的一个梗,第一个数不是1,是0

例如:

char char_list[5]={'p','a','p','e','r'};
printf("%c\n",char_list[0]);
printf("%c\n",char_list[1]);
printf("%c\n",char_list[2]);
printf("%c\n",char_list[3]);
printf("%c\n",char_list[4});

输出结果

papper

1.我们定义一个字符数组并赋值,然后打印输出它,填入第一个下标0:

2.填入第二个下标和方括号[1],需要注意的是,由于没有换行符/n,所以这五个字符字母是在同一排输出的:

2.6

除了访问数组的元素以外,我们还可以修改数组的元素,因为数组的元素也和变量一样,可以重新赋值和修改。

创建一个数组并初始化赋值1,0,2,4,然后修改这个数组的元素,赋值1,1,1,1:

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

1.定义一个整型数组,赋值1,0,2,4

2.给第二个数组元素赋值1,因为第一个数组元素就是1,无需修改

3.给第三个数组元素赋值1

4.给第四个数组元素赋值1

2.7

既然是个线性结构,我们就不能超出这个这个线性表的长度,比如一个数组长度是‘3’,我们可使用的范围就是0到2

超出这个范围就属于越界”,程序会报错

3.易错点

如图 

方括号[]中常量表达式表示数组元素的个数;

数组元素的索引是从0开始的;

数组大小必须是大于0的正整数

4.思维导图

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决WebSocket通信:前端拿不到最后一条数据的问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

CTFhub-SSRF-内网访问

CTFHub 环境实例 | 提示信息 http://challenge-8bf41c5c86a8c5f4.sandbox.ctfhub.com:10800/?url_ 根据提示,在url 后门添加 127.0.0.1/flag.php http://challenge-8bf41c5c86a8c5f4.sandbox.ctfhub.com:10800/?url127.0.0.1/flag.php ctfhub{a6bb51530c8f6be0…

自动化运维:Ansible之playbook基于ROLES部署LNMP平台

目录 一、理论 1.playbook剧本 2.ROLES角色 3.关系 4.Roles模块搭建LNMP架构 二、实验 1.Roles模块搭建LNMP架构 三、问题 1.剧本启动php报错语法问题 2.剧本启动mysql报错语法问题 3.剧本启动nginx开启失败 4.剧本安装php失败 5.使用yum时报错 6.rpm -Uvh https…

springsecurity+oauth 分布式认证授权笔记总结12

一 springsecurity实现权限认证的笔记 1.1 springsecurity的作用 springsecurity两大核心功能是认证和授权,通过usernamepasswordAuthenticationFilter进行认证;通过filtersecurityintercepter进行授权。springsecurity其实多个filter过滤链进行过滤。…

11 - 深入了解NIO的优化实现原理

Tomcat 中经常被提到的一个调优就是修改线程的 I/O 模型。Tomcat 8.5 版本之前,默认情况下使用的是 BIO 线程模型,如果在高负载、高并发的场景下,可以通过设置 NIO 线程模型,来提高系统的网络通信性能。 我们可以通过一个性能对比…

STM32f103入门(8)TIM输入捕获输入捕获测频率PWMI测占空比

TIM输入捕获 频率测量输入捕获基本结构PWMI基本结构主从触发模式输入捕获测量频率PWMI测占空比 频率测量 输入捕获基本结构 CNT计数一个周期,转运到CCR1里面去,CNT0 这时候CCR1N FxFc/N Fc cnt的驱动时钟 这时候就可以得到频率 Fc72M/PSC PWMI基本结构 …

设计模式之组合模式

文章目录 一、介绍二、案例 一、介绍 组合模式(Composite Pattern),属于结构型设计模式。组合模式常用于树形的数据结构,比如:多级菜单、部门层级关系、html文本中的dom树。它的特点是使用户对单个对象和组合对象的使用是相同的。 二、案例…

mac制作ssl证书|生成自签名证书,nodejs+express在mac上搭建https+wss(websocket)服务器

注意 mac 自带 openssl 所以没必要像 windows 一样先安装 openssl,直接生成即可 生成 ssl/自签名 证书 生成 key # 生成rsa私钥,des3算法,server_ssl.key是秘钥文件名 1024位强度 openssl genrsa -des3 -out server_ssl.key 1024让输入两…

走进低代码平台| iVX-困境之中如何突破传统

前言: “工欲善其事,必先利其器”,找到和使用一个优质的工具平台,往往会事半功倍。 文章目录 1️⃣认识走近低代码2️⃣传统的低代码开发3️⃣无代码编辑平台一个代码生成式低代码产品iVX受面性广支持代码复用如何使用? 4️⃣总结…

如何自定义iview树形下拉内的内容

1.使用render函数给第一层父级定义 2. 使用树形结构中的render函数来定义子组件 renderContent(h, {root, node, data}) {return data.children.length0? h(span, {style: {display: inline-block,width: 400px,lineHeight: 32px}}, [h(span, [h(Icon, {type: ios-paper-outli…

PY32F003F18P单片机概述

PY32F003F18P单片机是普冉的一款ARM微控制器,内核是Cortex-M0。这个单片机的特色,就是价格便宜,FLASH和SRAM远远超过8位单片机,市场竞争力很强大。 一、硬件资源: 1)、FLASH为64K字节; 2)、SRAM为8K字节&…

解决gitee仓库中 .git 文件夹过大的问题

最近,许多项目都迁移到gitee。使用的也越来越频繁,但是今天突然收到一个仓库爆满的提示。让我一脸懵逼。本文将详细为你解答,这种情况如何处理。 1、起因 我收到的报错如下: remote: Powered by GITEE.COM [GNK-6.4] remote: T…

车载监管模块项目需求分析报告

目录 1 文档说明.......................................................................................... 4 2 参考文件.......................................................................................... 4 3 概述.......................................…

YOLOv7框架解析

YOLOv7概念 YOLOv7是基于YOLO系列的目标检测算法,由Ultra-Light-Fast-Detection(ULFD)和Scaled-YOLOv4两种算法结合而来。它是一种高效、准确的目标检测算法,具有以下特点: 1. 高效:YOLOv7在保持准确率的…

Qt应用开发(基础篇)——颜色选择器 QColorDialog

一、前言 QColorDialog类继承于QDialog,是一个设计用来选择颜色的对话框部件。 对话框窗口 QDialog QColorDialog颜色选择器一般用来让用户选择颜色,比如画图工具中选择画笔的颜色、刷子的颜色等。你可以使用静态函数QColorDialog::getColor()直接显示对…

项目 - 后端技术栈转型方案

前言 某开发项目的后端技术栈比较老了,现在想换到新的技术栈上。使用更好的模式、设计思想、更合理的架构等,为未来的需求迭代做铺垫。怎么办呢?假设系统目前在线上运行着的,直接整体换的话耗时太久,且中间还有新的需…

linux安装docker全过程

3. 第二步:设置docker的存储库。就两条命令,我们直接执行就好。 ​ sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo ​​ 4. 安装docker engine和docker-compose。 执行命…

Kotlin inline、noinline、crossinline 深入解析

主要内容: inline 高价函数的原理分析Non-local returns noinlinecrossinline inline 如果有C语言基础的,inline 修饰一个函数表示该函数是一个内联函数。编译时,编译器会将内联函数的函数体拷贝到调用的地方。我们先看下在一个普通的 kot…

QChart绘制柱状图并修改单个柱状条的颜色

文章目录 前言Qt Chart修改单个柱状图的颜色柱状堆积图利用柱状堆积图实现修改单个柱状条的颜色总结 前言 Qt Charts是Qt官方提供的一个模块,用于在Qt应用程序中创建各种图表和数据可视化。它提供了一组用于绘制和展示统计数据、趋势分析、实时数据等的类和函数。 …

【前端】 Layui点击图片实现放大、关闭效果

实现效果&#xff1a;点击图片实现放大&#xff0c;点击空白处关闭效果。下图。 实现逻辑&#xff1a;二维码是使用JQ插件生成的&#xff0c;点击二维码&#xff0c;获取图片路径&#xff0c;通过Layui的弹窗显示放大后的图片。 Html <div id"qrcode" class&quo…