C语言(一维数组)

news2024/11/24 14:11:49

                    Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,关注+收藏,欢迎欢迎~~     

                        💥个人主页:小羊在奋斗

                        💥所属专栏:C语言   

        本系列文章为个人学习笔记,在这里撰写成文一为巩固知识,二为同样是初学者的学友展示一些我的学习过程及心得。文笔、排版拙劣,望见谅。

                                一、一维数组的创建和初始化

                                                1.什么是数组?

                                                2.数组的创建

                                                3.数组的初始化

                                二、一维数组的使用

                                                1.数组下标

                                                2.数组元素的打印

                                                3.数组元素的输入

                                三、一维数组在内存中的存储

                                四、sizeof 计算数组元素个数

一、一维数组的创建和初始化

        1.什么是数组?

        数组是由一组具有相同类型的数据按照一定的规则组成的集合。其中的每个数据都称为数组元素,数组元素在内存中顺序排列,用数组名代表这一组数据。

         2.数组的创建

        type arr_name[常量值];

        数组在创建的时候可以指定数组的大小和数组的元素类型。

        数组长度只能为大于0的整型常量或整型常量表达式,不能包含变量。例如:

        int n = 6;

        int a = [n];  

        int b[-10];

        float c[3.14];

        上面三个示例都是不合法的。

        但是,如果想方便地修改数组的大小,可以使用符号常量,例如:

        #define n 6

        int a[n];

        上面的用法在这篇文章中有简单介绍 —> C语言基础

        type 指定的是数组中存放数据的类型,可以是:char 、short、int 和 float 等,也可以是自定义类型。arr_name 指的是数组的名字。例如:

        int a[10];

        定义了一个一维整形数组,数组名为 a ,其中包含10个数组元素。

3.数组的初始化

        有时候,数组在创建的时候,我们需要给定一些初始值,这就叫数组的初始化。

        

        我们对定义的数组 b 进行了不完全初始化,其中未赋值的元素自动取0值。

        再看数组 c ,中括号中可以不写入数值,不指定数组的长度,数组长度默认为花括号内值的个数。

二、一维数组的使用

本篇我们先介绍一些简单的用法,更多用法请观看下篇文章 —> 一维数组的应用

1.数组下标

        数组的下标从0开始,假设数组有 n 个元素,则最后一个元素的下标是 n - 1,下标就相当于数组元素的编号。例如:

        int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

        在C语言中数组的访问提供了一个操作符 [ ] ,这个操作符叫:下标引用操作符。

        有了下标引用操作符,我们就可以轻松访问到数组元素了,比如我们访问下标为3和下标为7的元素:

        事实上,数组元素和下标是下面这样对应的:

2.数组元素的打印

        我们也可以将上面定义的数组里的元素全部打印出来:

3.数组元素的输入

        同样的,我们也可以给数组随便输入10个值:

        有一个细节需要注意,用 scanf 函数时,参数%d后面不要加空格。具体原因还请阅读这篇文章 —> scanf 函数没这么简单

三、一维数组在内存中的存储

        数组名就是数组内首元素的地址。

        上述打印出的地址是16进制的。

        可以看到,相邻两个数组元素之间地址相差4个字节,为什么是4呢?因为我们定义的数组是int 类型的,一个 int 类型的值占4个字节。所以我们可以得出一个结论:数组元素在内存中是连续存储的。并且,随着下标的增长,地址是由小(低)到大(高)变化的。这就为后期我们使用指正访问数组奠定了基础。

 四、sizeof 计算数组元素个数     

         sizeof 关键字在之前的文章中介绍过 —> C语言(数据和变量)

        在遍历数组的时候,我们经常需要知道数组元素的个数,那我们就可以使用 sizeof 来实现。

sizeof 是C语言中的一个关键字,是可以计算类型或者变量大小的,其实 sizeof 也可以计算数组的大小。

        其原理为,sizeof (arr)计算的是数组所占内存空间的总大小,单位是字节,sizeof (arr[0])计算的是数组中下标为0的一个元素所占内存空间的大小,用总的除以一个就得到了数组元素的个数。

                                          点击跳转主页—> 💥个人主页:小羊在奋斗

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

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

相关文章

鸿蒙TypeScript学习21天:【声明文件】

TypeScript 作为 JavaScript 的超集,在开发过程中不可避免要引用其他第三方的 JavaScript 的库。虽然通过直接引用可以调用库的类和方法,但是却无法使用TypeScript 诸如类型检查等特性功能。为了解决这个问题,需要将这些库里的函数和方法体去…

将本地项目上传到Github

首先安装git、创建github账号 1、创建一个新的仓库 2、创建SSH KEY。先看一下你C盘用户目录下有没有.ssh目录,有的话看下里面有没有id_rsa和id_rsa.pub这两个文件,有就跳到下一步,没有就通过下面命令创建。 ssh-keygen -t rsa -C "you…

微信小程序echart图片不显示 问题解决

目录 1.问题描述:2.解决方法:2.1第一步2.2第二步2.2效果 小结: 1.问题描述: echart图片不显示 图片: 2.解决方法: 2.1第一步 给wxml中的ec-canvas组件添加宽高样式:style"width: 100%…

Docker容器tomcat中文名文件404错误不一定是URIEncoding,有可能是LANG=zh_CN.UTF-8引起

使用Docker部署tomcat,出现中文名文件无法读取,访问就是404错误。在网上搜索一通,都说是在tomcat的配置文件server.xml中修改一下URIEncoding为utf-8就行,但是我怎么测试都不行。最终发现,是Docker启动时,传…

【经典算法】LeetCode 64. 最小路径和(Java/C/Python3/Golang实现含注释说明,Easy)

作者主页: 🔗进朱者赤的博客 精选专栏:🔗经典算法 作者简介:阿里非典型程序员一枚 ,记录在大厂的打怪升级之路。 一起学习Java、大数据、数据结构算法(公众号同名) ❤️觉得文章还…

java文件夹文件比较工具

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.HashSet; import java.util.Set;public class FolderFileNames {public static void main(String[] args) {// 假设您要读取的文件夹路径是 &q…

代码随想录-算法训练营day12【休息,复习与总结】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 ● day 12 周日休息(4.14) 目录 复习与总结 0417_图论-太平洋大西洋水流问题 0827_图论-最大人工岛 复习与总结 二刷做题速度提升了一大截,ヾ(◍∇◍)ノ゙加…

【IDEA】JRebel LS client not configured

主要原因就是因为 jrebel 的版本跟 idea的版本对不上,或者说jrebel的版本比idea的版本还高,导致出现该错误 查看idea版本 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a7ba43e6822947318cdb0d0e9d8d65e9.png 获取jrebel 版本 如何处理 …

设计模式:简单工厂模式(Simple Factory)

设计模式:简单工厂模式(Simple Factory) 设计模式:简单工厂模式(Simple Factory)模式动机模式定义模式结构时序图模式实现测试模式分析实例:Qt 控件类优缺点适用环境模式应用 设计模式&#xff…

李沐-26 网络中的网络 NiN【动手学深度学习v2】

主要记载关于全局平均池化层(Global Average Pooling, GAP)中如下两点的理解: 1. GAP的原理 2. 相对于全连接层,GAP具有更少的参数 为了直观地说明全局平均池化层相对于全连接层具有更少的参数,我们可以构造一个简…

博客文章:AWS re:Invent 2023 新产品深度解析 - 第四部分

TOC 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长! 写在最前面 去年发布文章的一部分,由于内…

bugku-web-login2

这里提示是命令执行 抓包发现有五个报文 其中login.php中有base64加密语句 $sql"SELECT username,password FROM admin WHERE username".$username.""; if (!empty($row) && $row[password]md5($password)){ } 这里得到SQL语句的组成,…

SOLIDWORKS批量改名工具个人版 慧德敏学

每个文件都会有自己的名字,SOLIDWOKRKS模型也不例外。但是如果从资源管理器直接修改模型的文件名,就会导致模型关联的丢失,导致装配体打开之后找不到模型,因此就需要使用SOLIDWORKS的重命名功能。 SOLIDWORKS批量改名插件- Solid…

Blazor 下的 Json 编辑器

最近恰好碰到个比较冷门的需求,就是在线编码 Json,这其中有Json的语法着色,有Json对象属性数据类型的限制,其实要是单纯改一下Json字符串也不是难事,就是没法控制让用户只能给属性值,而不是属性名称&#x…

【随笔】Git 高级篇 -- 远程服务器拒绝 git push reset(三十二)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

C++:仿函数模拟实现STL-priority_queue

优先级队列模拟实现 1.文档了解2.仿函数实现优先级队列仿函数1.定义2.语法3.使用 3.模拟实现源码 1.文档了解 从priority_queue的文档中,我们可以得出以下几点: 1.priority_queue是一个容器适配器 2.priority_queue它实质是一个堆,且默认为大…

【Leetcode】string类刷题

🔥个人主页:Quitecoder 🔥专栏:Leetcode刷题 目录 1.仅反转字母2.字符串中第一个唯一字符3.验证回文串4.字符串相加5.反转字符串I I6.反转字符串中的单词III7.字符串相乘8.把字符串转换为整数 1.仅反转字母 题目链接:…

MySQL 8.0.19安装教程(windows 64位)

在c盘目录下的Program Files目录下创建MySQL目录,将下载好的mysql解压到里面 解压完是这个样子 配置初始化的my.ini文件的文件 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirC:\Program Files\MySQL # 设置mysql数据库的数据的存放目录 datad…

便携式手提万兆网络协议测试仪

便携式手提万兆网络协议测试仪 平台简介 便携式手提万兆网络协议测试仪,以FPGA万兆卡和X86主板为基础,构建便携式的手提设备。 FPGA万兆卡是以Kintex-7XC7K325T PCIeX4的双路万兆光纤网络卡,支持万兆网络数据的收发和网络协议的定制设计。 …

weblogic JSP action的配置

action(如xxx.do)可以在Java文件中通过注解的方式配置,也可以在web.xml中进行配置 在java文件中配置的场合 WebServlet(xxxx.do) 并实现支持的方法:doGet或doPost等 或者 WebServlet(xxxx.do) 并实现service方法 所有method的处理方法都会…