【玩转C语言】第五讲--->数组-->一维和多维深度理解
🔥博客主页🔥:【 坊钰_CSDN博客 】
欢迎各位点赞👍评论✍收藏⭐
引言:
大家好,我是坊钰,为了让大家深入了解C语言,我开创了【玩转C语言系列】,将为大家介绍C语言相关知识,另外,还会不定时更新【C语言训练题库】,想学好C语言的宝子们,一定要收藏起来,一起努力吧!
点赞!收藏!以防以后找不到了!!!
目录
1. 数组的概念
2. ⼀维数组的创建和初始化
2.1 数组创建
2.2 数组的初始化
2.3 数组的类型
3. 一维数组
3.1 数组下标
3.2 数组打印
3.3 数组的输入
4. 一维数组在内存中的存储
5. sizeof计算元素个数
6. 二维数组
6.1 二维数组的创建
7. 二维数组的初始化
7.1 不完全初始化
7.2 完全初始化
7.3 按行初始化
7.4 可省略行,不可省略列
8. 二维数组的使用
8.1 二维数组的下标
8.2 二维数组的输入和输出
9. 二维数组在内存中的存储
10. 小结
1. 数组的概念
数组是⼀组相同类型元素的集合,有两点要记住
- 数组中存放的是1个或者多个数据,但是数组元素个数不能为0
- 数组中存放的多个数据,类型是相同的
数组分为⼀维数组和多维数组
2. ⼀维数组的创建和初始化
2.1 数组创建
type arr_name[m]
- type:为数组的数据类型
- arr_name:为数组名
- m:为数组大小
例:
一个班有20个学生
int Student[20]
2.2 数组的初始化
在创建的同时给予相应的元素,例:
//完全初始化int arr[10] = {1,2,3,4,5,6,7,8,9,10};//不完全初始化int arr[10] = {1}; //第一个元素为1,后面全为0
2.3 数组的类型
数组跟数据一样,有整型,字符型,浮点型
例:
int arr[10] //整型数组char arr[10] //字符型数组double arr[10] //浮点型数组
3. 一维数组
平常使用的都为一维数组,如:
int arr[10]char arr[10]...
3.1 数组下标
我们看一张图
数组的下标从 0 开始的,一个数组有 n 个元素,那最后一个元素的下标为 n-1
例:
#include <stdio.h>int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };printf("%d\n", arr[5]);return 0;
}
结果:
3.2 数组打印
那么我们该如何打印一个数组的元素呢?
一个数组有多个元素,我们需要使用到循环(for循环)
例:
#include <stdio.h>int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };for (int i = 0; i < 10; i++){printf("%d ", arr[i]);}printf("\n");return 0;
}
结果:
3.3 数组的输入
明白数组的打印,我们也可以按我们的需要来输入元素
例:
#include <stdio.h>int main()
{int arr[10] = { 0 };for (int i = 0; i < 10; i++){scanf("%d ", &arr[i]);}for (int i = 0; i < 10; i++){printf("%d ", arr[i]);}printf("\n");return 0;
}
结果:
4. 一维数组在内存中的存储
数组中元素,随着下标的增大,地址随之增大,那数组中元素是如何存放的呢?
我们打印数组元素的地址:
#include <stdio.h>int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };for (int i = 0; i < 10; i++){printf("&arr[%d] = %p \n",i, &arr[i]);}return 0;
}
从输出的结果我们分析,数组随着下标的增长,地址是由小到大变化的,并且我们发现每两个相邻的 元素之间相差4(因为⼀个整型是4个字节)
得出结论:数组在内存中是连续存放的
5. sizeof计算元素个数
当我们想要快速知道数组元素个数时,就可以利用sizeof 操作符
例:
#include <stdio.h>int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int count = sizeof(arr) / sizeof(arr[0]);printf("%d ", count);return 0;
}
关键:
int count = sizeof(arr) / sizeof(arr[0]);
用整个数组大小除以一个元素的大小就可以得到数组的元素个数
6. 二维数组
了解了一维数组,我们来了解二维数组
6.1 二维数组的创建
int arr[3][4];char arr[5][4];
- 3表示数组有3行
- 4表示每⼀行有4个元素
- int 表示数组的每个元素是整型类型
- arr 是数组名,可以根据自己的需要指定名
7. 二维数组的初始化
7.1 不完全初始化
int arr1[3][5] = {1,2};
int arr2[3][5] = {0};
7.2 完全初始化
int arr3[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7};
7.3 按行初始化
int arr4[3][5] = {{1,2},{3,4},{5,6}};
7.4 可省略行,不可省略列
int arr5[][5] = {1,2,3};
int arr6[][5] = {1,2,3,4,5,6,7};
int arr7[][5] = {{1,2}, {3,4}, {5,6}};
8. 二维数组的使用
8.1 二维数组的下标
建立一个二维数组
int arr[3][5] = {1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7}
例:
int main()
{int arr[3][5] = { 1,2,3,4,5, 2,3,4,5,6, 3,4,5,6,7 };printf("%d ", arr[2][4]);return 0;
}
结果:
8.2 二维数组的输入和输出
知道如何建立二维数组,那我们来了解二维数组的输入和输出
例:
#include <stdio.h>int main()
{int arr[3][5] = {0};for (int i = 0; i < 3; i++) //产生行号{for (int j = 0; j < 5; j++) //产生列号{scanf("%d ", &arr[i][j]); //输入}}for (int i = 0; i < 3; i++) //产生行号{for (int j = 0; j < 5; j++) //产生列号{printf("%d ", arr[i][j]); //输出}printf("\n");}return 0;
}
结果:
9. 二维数组在内存中的存储
知道了一维数组在内存中的存储,让我们来了解一下二维数组的
例:
#include <stdio.h>int main()
{int arr[3][5] = { 1,1,1,1,1,2,2,2,2,2,3,3,3,3,3 };for (int i = 0; i < 3; i++){for (int j = 0; j < 5; j++){printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);}}return 0;
}
从输出的结果来看,每⼀行内部的每个元素都是相邻的,地址之间相差4个字节,跨行位置处的两个元 素(如:arr[0][4]和arr[1][0])之间也是差4个字节
得出结论:⼆维数组中的每个元素都是连续存放的
10. 小结
以上就是关于【玩转C语言】第五讲的内容了,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持!
相关文章:

【玩转C语言】第五讲--->数组-->一维和多维深度理解
🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 引言: 大家好,我是坊钰,为了让大家深入了解C语言,我开创了【玩转C语言系列】,将为大家介绍C语言相关知识…...

Apache Flink 任务提交模式
Flink 任务提交模式 Flink可以基于多种模式部署:基于Standalone 部署模式,基于Yarn部署模式,基于Kubernetes部署模式以上不同集群部署模式下提交Flink任务会涉及申请资源,各角色交互过程,不同模式申请资源涉及到的角色…...

Ubuntu22.04安装OMNeT++
一、官网地址及安装指南 官网地址:OMNeT Discrete Event Simulator 官网安装指南(V6.0.3):https://doc.omnetpp.org/omnetpp/InstallGuide.pdf 官网下载地址:OMNeT Downloads 旧版本下载地址:OMNeT Old…...
Matlab课程设计——手指静脉识别项目
手指静脉识别项目 项目方案设计介绍 本项目实现手指图像的处理和匹配算法,需要处理的数据是本人不同手指的图像,首先经过图像处理,使得指静脉的纹理增强凸显处理,然后将所有的这些图像进行相互间的匹配,检验类内和类…...
centos软件安装
安装方式 一、二进制安装 --解压即用,只针对特殊平台 --jdk tomcat 二、RPM:按照一定规范安装软件,无法安装依赖的文件 --mysql 三、yum:远程安装基于RPM,把依赖的文件安装上去,需要联网 四、源码安装 jdk安…...
力扣 217. 存在重复元素,389. 找不同,705. 设计哈希集合,3. 无重复字符的最长子串,139. 单词拆分
217. 存在重复元素 题目 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 AC代码 class Solution { public:bool containsDuplicate(vector<int>& nums) {// …...
嵌入式软件工作能力
1. 工作能力 技术能力强,并不代表工作能力 2. 流程把控 3. 项目管理 4. “找茬”能力 5. 文档输出能力...

景区导航导览系统:基于AR技术+VR技术的功能效益全面解析
在数字化时代背景下,游客对旅游体验的期望不断提升。游客们更倾向于使用手机作为旅行的贴身助手,不仅因为它能提供实时、精准的导航服务,更在于其融合AR(增强现实)、VR(虚拟现实)等前沿技术&…...

Mybatis-Plus代码生成器配置方法
Mybatis-Plus网址:https://baomidou.com/pages/779a6e/#%E4%BD%BF%E7%94%A8 第一步:引入依赖 <!-- 代码生成器 --> <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId>…...

三主机部署HP Anyware Manager服务
一、序言 在部署拓扑和方案方面,HP Anyware Manager 非常灵活,可以部署在单个主机中,也可以部署在多个主机中,具体取决于组织的网络环境和运营要求。 二、单主机部署 2.1 描述 此部署配置是当 Anyware Manager 和 MongoDB 以及…...

Grafana :利用Explore方式实现多条件查询
背景 日志统一推送到Grafana上管理。所以,有了在Grafana上进行日志搜索的需求,而进行日志搜索通常需要多条件组合。 解决方案 通过Grafana的Explore的方式实现多条件查询。 直接看操作步骤: 在主页搜索框中输入“Explore” 进入这个界面…...

腾讯技术创作特训营 -- SUPERWINNIE -- AI重塑社交内容
目录 1 什么是AI社交内容 2 案例拆解 3 用LLM做爆文选题 4 用LLM出爆文脚本提示词 1 什么是AI社交内容 任何一个因素被AI取代都是AI社交内容 2 案例拆解 数字人 资讯素材 录屏产品的素材(小红书测试AI产品) 脚本 素材 剪辑 3 用LLM做爆文选题 &…...

AV1技术学习: Compound Prediction
一、双向 Compound Prediction AV1支持两个参考帧的预测通过多种复合模式线性组合。复合预测公式为 其中,权重m(x, y) is scaled by 64 以进行整数计算,R1(x, y)和R2(x, y)表示两个参考块中位于(x, y)的像素。P(x, y)将按比例缩小 1/64 以形成最终的预测…...
watch监听vue2与vue3的写法
watch的属性值 handler:回调函数, 即监听到变化时应该执行的函数,可以是单独的函数或带有 immediate 和 deep 属性的对象watch: {someProperty: function(newVal, oldVal) {// 处理逻辑}}deep: 其值是true或false, 当属性值是对象或数组时,深度观察会监…...

docker搭建普罗米修斯监控gpu
ip8的服务器监控ip110和ip111的服务器 被监控的服务器110和111只需要安装node-export和nvidia-container-toolkit 下载镜像包 docker pull prom/node-exporter docker pull prom/prometheus docker pull grafana/grafana新建目录 mkdir /opt/prometheus cd /opt/prometheus/…...

像 MvvmLight 一样使用 CommunityToolkit.Mvvm 工具包
文章目录 简介一、安装工具包二、实现步骤1.按照MvvmLight 的结构创建对应文件夹和文件2.编辑 ViewModelLocator3.引用全局资源二、使用详情1.属性2.命令3. 消息通知4. 完整程序代码展示运行结果简介 CommunityToolkit.Mvvm 包(又名 MVVM 工具包,以前称为 Microsoft.Toolkit…...
python入门课程Pro(2)--循环
循环 第1课 for循环的基本操作1.循环2.遍历3.for 循环遍历字典(1) 遍历字典的键(2)遍历字典的值(3)遍历字典的键和值 4.练习题(1)班级成绩单(2)最出名的城市(3)修改成绩(…...
今日总结:雪花算法,拉取在线用户
雪花算法: public class SnowflakeIdGenerator {private final long epoch 1626804000000L; // 定义起始时间戳,这里设置为2021-07-21 00:00:00 UTCprivate final long workerIdBits 5L; // 机器ID所占的位数private final long sequenceBits 10L; /…...

前瞻断言与后瞻断言:JavaScript 正则表达式的秘密武器
JavaScript 中的前瞻断言(lookahead)和后瞻断言(lookbehind)相信用过的小伙伴就知道它的威力了,在一些特定的需求场景下,可以做到四两拨千斤的作用,今天让我们来盘点一下在 JavaScript 正则表达…...

昇思MindSpore学习总结十六 —— 基于MindSpore的GPT2文本摘要
1、mindnlp 版本要求 !pip install tokenizers0.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 该案例在 mindnlp 0.3.1 版本完成适配,如果发现案例跑不通,可以指定mindnlp版本,执行!pip install mindnlp0.3.1 !pip install mindnlp …...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...