当前位置: 首页 > news >正文

【玩转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语言】第五讲--->数组-->一维和多维深度理解

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 引言&#xff1a; 大家好&#xff0c;我是坊钰&#xff0c;为了让大家深入了解C语言&#xff0c;我开创了【玩转C语言系列】&#xff0c;将为大家介绍C语言相关知识…...

Apache Flink 任务提交模式

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

Ubuntu22.04安装OMNeT++

一、官网地址及安装指南 官网地址&#xff1a;OMNeT Discrete Event Simulator 官网安装指南&#xff08;V6.0.3&#xff09;&#xff1a;https://doc.omnetpp.org/omnetpp/InstallGuide.pdf 官网下载地址&#xff1a;OMNeT Downloads 旧版本下载地址&#xff1a;OMNeT Old…...

Matlab课程设计——手指静脉识别项目

手指静脉识别项目 项目方案设计介绍 本项目实现手指图像的处理和匹配算法&#xff0c;需要处理的数据是本人不同手指的图像&#xff0c;首先经过图像处理&#xff0c;使得指静脉的纹理增强凸显处理&#xff0c;然后将所有的这些图像进行相互间的匹配&#xff0c;检验类内和类…...

centos软件安装

安装方式 一、二进制安装 --解压即用&#xff0c;只针对特殊平台 --jdk tomcat 二、RPM&#xff1a;按照一定规范安装软件&#xff0c;无法安装依赖的文件 --mysql 三、yum&#xff1a;远程安装基于RPM&#xff0c;把依赖的文件安装上去&#xff0c;需要联网 四、源码安装 jdk安…...

力扣 217. 存在重复元素,389. 找不同,705. 设计哈希集合,3. 无重复字符的最长子串,139. 单词拆分

217. 存在重复元素 题目 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 &#xff0c;返回 true &#xff1b;如果数组中每个元素互不相同&#xff0c;返回 false 。 AC代码 class Solution { public:bool containsDuplicate(vector<int>& nums) {// …...

嵌入式软件工作能力

1. 工作能力 技术能力强&#xff0c;并不代表工作能力 2. 流程把控 3. 项目管理 4. “找茬”能力 5. 文档输出能力...

景区导航导览系统:基于AR技术+VR技术的功能效益全面解析

在数字化时代背景下&#xff0c;游客对旅游体验的期望不断提升。游客们更倾向于使用手机作为旅行的贴身助手&#xff0c;不仅因为它能提供实时、精准的导航服务&#xff0c;更在于其融合AR&#xff08;增强现实&#xff09;、VR&#xff08;虚拟现实&#xff09;等前沿技术&…...

Mybatis-Plus代码生成器配置方法

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

三主机部署HP Anyware Manager服务

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

Grafana :利用Explore方式实现多条件查询

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

腾讯技术创作特训营 -- SUPERWINNIE -- AI重塑社交内容

目录 1 什么是AI社交内容 2 案例拆解 3 用LLM做爆文选题 4 用LLM出爆文脚本提示词 1 什么是AI社交内容 任何一个因素被AI取代都是AI社交内容 2 案例拆解 数字人 资讯素材 录屏产品的素材&#xff08;小红书测试AI产品&#xff09; 脚本 素材 剪辑 3 用LLM做爆文选题 &…...

AV1技术学习: Compound Prediction

一、双向 Compound Prediction AV1支持两个参考帧的预测通过多种复合模式线性组合。复合预测公式为 其中&#xff0c;权重m(x, y) is scaled by 64 以进行整数计算&#xff0c;R1(x, y)和R2(x, y)表示两个参考块中位于(x, y)的像素。P(x, y)将按比例缩小 1/64 以形成最终的预测…...

watch监听vue2与vue3的写法

watch的属性值 handler:回调函数, 即监听到变化时应该执行的函数&#xff0c;可以是单独的函数或带有 immediate 和 deep 属性的对象watch: {someProperty: function(newVal, oldVal) {// 处理逻辑}}deep: 其值是true或false, 当属性值是对象或数组时&#xff0c;深度观察会监…...

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 循环遍历字典&#xff08;1&#xff09; 遍历字典的键(2)遍历字典的值(3)遍历字典的键和值 4.练习题&#xff08;1&#xff09;班级成绩单&#xff08;2&#xff09;最出名的城市&#xff08;3&#xff09;修改成绩&#xff08;…...

今日总结:雪花算法,拉取在线用户

雪花算法&#xff1a; public class SnowflakeIdGenerator {private final long epoch 1626804000000L; // 定义起始时间戳&#xff0c;这里设置为2021-07-21 00:00:00 UTCprivate final long workerIdBits 5L; // 机器ID所占的位数private final long sequenceBits 10L; /…...

前瞻断言与后瞻断言:JavaScript 正则表达式的秘密武器

JavaScript 中的前瞻断言&#xff08;lookahead&#xff09;和后瞻断言&#xff08;lookbehind&#xff09;相信用过的小伙伴就知道它的威力了&#xff0c;在一些特定的需求场景下&#xff0c;可以做到四两拨千斤的作用&#xff0c;今天让我们来盘点一下在 JavaScript 正则表达…...

昇思MindSpore学习总结十六 —— 基于MindSpore的GPT2文本摘要

1、mindnlp 版本要求 !pip install tokenizers0.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 该案例在 mindnlp 0.3.1 版本完成适配&#xff0c;如果发现案例跑不通&#xff0c;可以指定mindnlp版本&#xff0c;执行!pip install mindnlp0.3.1 !pip install mindnlp …...

React Router 6笔记

一个路由就是一个映射关系 key为路径&#xff0c;value可能是function或component 路由分类 后端路由&#xff08;node&#xff09; value是function&#xff0c;用来处理客户端提交的请求注册路由&#xff1a;router.get(path, function(req, res))工作过程&#xff1a;当…...

Android init 中的wait_for_property指令

Android开机优化系列文档-CSDN博客 Android 14 开机时间优化措施汇总-CSDN博客Android 14 开机时间优化措施-CSDN博客根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客Android系统上常见的性能优化工具-CSDN博客Android上如何使用perfetto分析systrace-CSDN博客A…...

智能合约语言(eDSL)—— 并行化方案——调度算法

3、调度算法 处理区块的时候,我们会同时启动多个线程去执行多个交易,这个时候我们需要一个良好的调度策略,来决定当前的线程是应该执行交易还是验证交易、提前结束还是立刻重新执行交易等,只有有一个良好调度策略才能保证所有交易都稳定有序的执行; 线程数量 这是一个不…...

vue2.0中如何实现数据监听

vue2中实现数据监听的原理 在Vue 2中&#xff0c;数据监听是通过ES5的Object.defineProperty实现的。Vue在初始化数据对象时&#xff0c;会遍历data对象&#xff0c;并使用Object.defineProperty为每个属性设置getter和setter。当你尝试读取或修改数据属性时&#xff0c;这些g…...

kafka开启kerberos和ACL

作者&#xff1a;恩慈 一、部署kafka-KB包 1&#xff0e;上传软件包 依次点击 部署中心----部署组件----上传软件包 选择需要升级的kafka版本并点击确定 2&#xff0e;部署kafka 依次点击部署中心----部署组件----物理/虚拟机部署----选择集群----下一步 选择手动部署-…...

QT+winodow 代码适配调试总结(三)

问题描述: 1、开发测试环境为: A: window10 64位 B: QT版本为4.8.6 C:采用VS2017 C++ Compiler 9.0 (x86)编译器版本 根据总结(二)经验,开发环境的可执行程序显示正常; 2、新的环境运行的时候显示乱码; 经过查阅资料,还是代码环境编码配置的问题,下面为解…...

Linux之旅:常用的指令,热键和权限管理

目录 前言 1. Linux指令 &#xff08;1&#xff09; ls &#xff08;2&#xff09; pwd 和 cd &#xff08;3&#xff09;touch 和 mkdir &#xff08;4&#xff09; rmdir 和 rm &#xff08;5&#xff09;cp &#xff08;6&#xff09;mv &#xff08;7&#xff09;…...

简单实用的企业舆情安全解决方案

前言&#xff1a;企业舆情安全重要吗&#xff1f;其实很重要&#xff0c;尤其面对负面新闻&#xff0c;主动处理和应对&#xff0c;可以掌握主动权&#xff0c;避免股价下跌等&#xff0c;那么如何做使用简单实用的企业舆情解决方案呢&#xff1f; 背景 好了&#xff0c;提取词…...

【中项】系统集成项目管理工程师-第2章 信息技术发展-2.1信息技术及其发展-2.1.1计算机软硬件与2.1.2计算机网络

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…...

SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 4、SpringBoot集成Sharding-JDBC-5.3.0分库分表 5、SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表 前言 …...

企业网站ppt怎么做/成都搜索优化整站优化

导读&#xff1a;眼看着国庆节就要到来了&#xff0c;在这举国同庆的日子里&#xff0c;我们要给小伙伴送上什么样的祝福语才比较令人难忘呢?下面万年历小编为您收集了一些超级经典的国庆节祝福语 &#xff0c;希望能够帮到您。国庆节图片超级经典的国庆节祝福语&#xff1a;1…...

注册一个网站需要多少钱/焦作网站seo

1、Java 中会存在内存泄漏吗&#xff0c;请简单描述。 答&#xff1a; 理论上 Java 因为有垃圾回收机制&#xff08;GC&#xff09;不会存在内存泄露问题&#xff08;这也是 Java 被 广泛使用于服务器端编程的一个重要原因&#xff09;&#xff1b;然而在实际开发中&#xf…...

流量对网站排名的影响因素/软文写作要求

本节重点介绍jquery中调用ajax的4种方法&#xff1a;$.get、$.post、$getJSON、$ajax。如果读者没有javascript和jquery的知识&#xff0c;或没有ajax的概念&#xff0c;请先参阅下本站的javascript教程与jquery教程栏目中的相关内容。1、$.get$.get()方法使用GET方式来进行异步…...

廊坊建站/外贸网站seo

今天做项目时报了一个错提示说Invalid bound statement (not found)&#xff0c;也就是说mapper接口绑定.xml文件出错了&#xff0c;找不到指定的sql&#xff1b;原因是程序没有把.xml文件编译到classes路径下&#xff0c;这时需要在pom.xml文件的<build>标签中加入下面的…...

内网网站建设/中国十大网络销售公司

1. 联合概率密度函数 2. 概率密度的性质 3. 二元连续型随机变量概率分布函数求解示例...

私有云可以做网站/软文写作技巧及范文

&#x1f44f;&#x1f44f;&#x1f44f; 哈喽&#xff01;大家好&#xff0c;我是【学无止境小奇】&#xff0c;一位热爱分享各种技术的博主&#xff01;&#x1f60d;&#x1f60d;&#x1f60d; ⭐【学无止境小奇】的创作宗旨&#xff1a;每一条命令都亲自执行过&#xf…...