c语言一维数组总结详解

目录

介绍:

一维整型数组:

声明:

初始化:

打印输出:

输出结果:

浮点型数组:

代码:

运行结果:

补充:

一维字符数组:

字符数组声明及初始化:

部分全部代码:

总结:

介绍:

本篇文章将同时介绍一维整型,浮点型,字符数组

一维整型数组:

声明:

int + 数组名[数组长度(也可以不写)]

初始化:

来看代码解释初始化方法

int a[ ] : a这个数组的长度虽然没写 但是因为后面的初始化 这个数组的长度是6

int a1[6] : a1这个数组的初始化就是最标准的声明及初始化方式
还有一种方式:

int a2[6]: a2这个数组的初始化 是从键盘输入数值(很显然输入六个值) 大家应该我的第一行代码是什么意思 

因为我用的Visual Studio 2022 编译器 不加第一行代码scanf用不了 

打印输出:

那么怎么输出这几个数组呢?来看代码:

倒数三个for循环就是用来打印三个数组 所以打印数组就得用for循环  如果大家还有什么办法评论区发言哦

输出结果:

第一行就是a2数组的输入

2,3,4行就分别是三个数组的 输出结果

浮点型数组:

代码:

这里的代码就不做讲解了 大家可以看上文

运行结果:

 

这里第一行和小编上一篇文章一样 输入了一个数组 

补充:

大家先看小编给大家写的一个图片:

看完这个图片小编补充一下

就是数组 a[6]: "[   ]" 里面的数字6 代表这个数组有6个元素 就是6 个int类型的数字 

然后 如果咱们想要用数组里的第一个数字我们要取a[0]

所以很容易发现一个规律:想要数组里的第n个数 a[n - 1]  就是那个数

一维字符数组:

字符数组声明及初始化:

来看代码:

1.数组b就是 最普遍的初始化字符数组和声明数组的方法 可以看到和 之前讲过的整型数组非常相似 就是存储的数据类型不同 

2.数组a就有点不同了 大家可以发现 相比于数组b 数组a多了一个‘\0’ 这就说明 数组a可以当做字符串使用了 因为它具备了字符串的标志‘\0’  ‘\0’ 就是字符串的结束符 每个字符串都应具有的标志 否则 计算机就找不到字符串的头在哪了 就会一直读 会出现一堆乱码 直到读到字符串数组的最后一个元素 和整型一样 没有初始化的元素 系统会随机显示一些数 而有了结束符之后 系统就不会往后读了 这些 下面讲

注意:像数组a,b这种初始化方式 未初始化的部分都是空 就打印出来什么都没有

 

可以看到并没有出现乱码 这里听不懂的 就懂了

3.数组a1就是把a1看成了一个字符串 这个时候系统会自动在数组的后面加一个‘\0’ 不需要我们手动加 还要注意一点就是数组的长度要比我们存进去的字符串的长度大 因为得给‘\0’ 留一个位置啊 它可是大哥啊

4.数组a2与a1一样 所以可以看到  当要声明一个字符串的时候 加不加{ }都无所谓 

5.数组a3 这个数组可以发现仅仅声明了 并没有初始化 下面是他的初始化代码

 

 

 gets函数就是用来初始化这个a3数组的 通过代码可以看到这个函数的用法 原理就是咱们自己输入

一个字符串然后存在a3里 但是记住输入的字符串长度不可以超过14 因为要给‘\0’ 留一个位置啊 很显然 gets函数 也是自动在字符串的后面补个‘\0’ 没有‘\0’ 怎么能叫做字符串呢

puts函数用来打印字符串 当然你也可以用printf函数 但是puts函数打印完一个字符串会换行

来看这段代码的执行结果:

很显然咱们输入zsm了zsm 

再来看看用printf打印字符串 

很显然打印完字符串的时候没有换行 而且我们要用“%s” 去打印字符串 同时可以发现 我们只写了a3 就打印字符串了 所以当我们打印字符串时 传入字符串的首地址就会打印字符串了 直到‘\0’ 为止

6.数组a4 下面是他的初始化代码:

 

EOF 这里就不深说了 我告诉大家怎么用 就是咱们不是输入字符串吗 当你不想输的时候 就先回车 在 ctrl + z 回车 (重复三次就完事了)

再说一个细节 就是scanf函数不接收空格 但是它可以补‘\0’  当前面是%s的时候

来看执行结果

^Z 就是ctrl + z啦

其实还有另一种写法

这种就不需要 ctrl + z那种操作啦

来看执行结果

可以看到 我输入了zsm zsm

但是只打印了zsm 因为scanf函数不接收空格

所以当有空格的时候 scanf函数 就停止输入了

7.数组a5

 这个也一样用到了EOF  但是这个不需要重复操作ctrl + z 只需要一次 所以为了好记 大家就记住 遇到EOF 想要结束直接回车然后重复ctrl + z + 回车就完事了直到结束来看执行结果

可以看到在输出完zsm 之后又来一堆乱码 这就是 没有  ‘\0’  的缘故 系统读到了 没有初始化的部分 

来介绍一种解决办法 来看代码

就是按照常规打印数组的方式 打印 有几个打几个

部分全部代码:

 

这里并没有头文件大家自己添加吧 

输出结果:

总结: 

本期内容到此结束啦

大家每天进步一点点就好啦

持续关注我的数组内容哦

再送大家一句话 锲而舍之,朽木不折;锲而不舍,金石可镂

散会!!!

 

 

 

 

 

 

 

 

 

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

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

相关文章

Python轴承故障诊断 (二)连续小波变换CWT

目录 前言 1 连续小波变换CWT原理介绍 1.1 CWT概述 1.2 CWT的原理和本质 2 基于Python的CWT实现与参数对比 2.1 代码示例 2.2 参数介绍和选择策略 2.2.1 尺度长度: 2.2.2 小波函数(wavelet): 2.3 凯斯西储大学轴承数据的…

《算法与数据结构》答疑

答疑 问题一问题二问题三问题四 问题一 在匹配成功时,在返回子串位置那里,为什么不是i-t的长度啊,为什么还要加一 问题二 问题三 问题四 问:如果题目让我们构造一个哈夫曼树,像我发的这个例题的话,我画成我…

深度学习与计算机视觉技术的融合

深度学习与计算机视觉技术的融合 一、引言 随着人工智能技术的不断发展,深度学习已经成为了计算机视觉领域的重要支柱。计算机视觉技术能够从图像和视频中提取有用的信息,而深度学习则能够通过学习大量的数据来提高计算机视觉技术的性能。本文将探讨深…

贪心算法和动态规划

目录 一、简介 二、贪心算法案例:活动选择问题 1.原理介绍 三、动态规划案例:背包问题 1.原理介绍 四、贪心算法与动态规划的区别 五、总结 作者其他文章链接 正则表达式-CSDN博客 深入理解HashMap:Java中的键值对存储利器-CSDN博客…

Java Web——过滤器 监听器

目录 1. Filter & 过滤器 1.1. 过滤器概述 1.2. 过滤器的使用 1.3. 过滤器生命周期 1.4. 过滤器链的使用 1.5. 注解方式配置过滤器 2. Listener & 监听器 2.1. 监听器概述 2.2. Java Web的监听器 2.2.1. 常用监听器 2.2.1.1. ServletContextListener监听器 …

Course3-Week1-无监督学习

Course3-Week1-无监督学习 文章目录 Course3-Week1-无监督学习1. 欢迎1.1 Course3简介1.2 数学符号约定 2. K-means算法2.1 K-means算法的步骤2.2 代价函数2.3 选择聚类数量 3. 异常检测3.1 异常检测的直观理解3.2 高斯分布3.3 异常检测算法3.4 选取判断阈值 ε \varepsilon ε…

Redis 持久化 —— 超详细操作演示!

四、Redis 持久化 四、Redis 持久化4.1 持久化基本原理4.2 RDB持久化4.3 AOF持久化4.4 RDB与AOF对比4.5 持久化技术转型 五、Redis 主从集群六、Redis 分布式系统七、Redis 缓存八、Lua脚本详解九、分布式锁 数据库系列文章: 关系型数据库: MySQL —— 基础语法大全…

【京东服装推荐系统 - 数据爬取、可视化和个性化推荐】

京东服装推荐系统 - 数据爬取、可视化和个性化推荐 前言数据集与数据爬取数据分析与可视化Django搭建可视化平台主要功能1. 数据可视化2. 我的收藏3. 商品推荐4. 登录注册5. 信息展示6. 信息管理7. 对数据的收藏8. 推荐 创新点结语 前言 在现今的电商市场中,服装领…

鸿蒙原生应用/元服务开发-新版本端云一体化模板体验反馈

一、前言 云端一体化模板是基于Serverless服务构建的一套模板,提供了应用生态常见场景需求的代码实现,开发者可将所需能力快速部署和集成到自己的应用中。 二、准备 体验最新的远端一体化模板,需要将云模板替换掉。为此,我们需要做…

我对迁移学习的一点理解——领域适应(系列3)

文章目录 1. 领域适应(Domain Adaptation)的基本概念2.领域适应(Domain Adaptation)的目标3.领域适应(Domain Adaptation)的实现方法4.领域适应(Domain Adaptation)的可以解决的问题…

gittee使用教学

一、git简介 Git是一个开源的分布式版本控制系统,用于敏捷高效的处理任何大小项目的版本管理。 核心功能: 项目的版本管理 团队协同开发 二、准备工作 1、下载 Git 2、除了选择安装位置以外,其他都无脑安装 3、检查一下安装情况 win…

这嵌入式“玩具”也太酷了吧~

大家周末好,我是bug菌~ 今天看到有朋友晒出了一个“玩具”,实在是太酷了,嵌入式开发人员谁不爱?于是去了解了下,顺便分享给大家~ 这机器是clockwork推出的uconsole,console大家这应该很熟悉&…

Leetcode刷题笔记题解(C++):92. 反转链表 II

思路:获取要反转的区间,拆开之后进行反转再拼接 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* …

【Linux】stat命令使用

stat命令 stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。 著者 由Michael Meskes撰写。 stat命令 -Linux手册页 语法 stat [文件或目录] 命令选项及作用 执行令 : stat --help 执行命令结果 参数 -L、 --dereference 跟…

Star CCM+ 停止并保存用命令行运行的计算

在 StarCCM 命令行运行 中介绍了命令行运行计算的方法,有网友询问停止计算的命令,但计算一旦提交之后应该是不能用命令结束的,除非是用 kill 或任务管理器直接结束进程。然而,直接结束进程不会自动保存计算结果。 问题 通常情况下…

lv12 系统移植导学 1

1 导学 Kernel学习主要包括三块内容,ARM(汇编、协议)、系统移植、驱动移植 lv12主要时安装系统linux linux主要帮我们实现了5大功能 1 进程、线程管理 2 内存管理 3 网络协议栈管理 4 文件系统管理 5 设备管理 2 移植的目的 不同架构…

【数据结构】——排序篇(下)

前言:前面我们的排序已经详细的讲解了一系列的方法,那么我们现在久之后一个归并排序了,所以我们现在就来讲解一下归并排序。 归并排序: 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法…

代码随想录二刷 |二叉树 | 二叉树的右视图

代码随想录二刷 |二叉树 | 二叉树的右视图 题目描述解题思路代码实现 题目描述 199.二叉树的右视图 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例…

表格的介绍与实战(详细且有案例)

目录​​​​​​​​​​​​​​ 表格的主要作用: 表格的基本语法: 表格相关的标签 合并单元格: 实战: 表格的主要作用: 表格主要是用来展示数据的,使用表格来展示数据,数据可读性更好…