从最浅层剖析C语言——第四节(超详细讲解一维数组内容)

2024-08-25 09:12

本文主要是介绍从最浅层剖析C语言——第四节(超详细讲解一维数组内容),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1. 数组的概念

2. 一维数组的创建及其初始化

2.1 数组的创建

2.2 数组的初始化

考点总结:当我们未对数组进行初始化时,数组里面的元素打印出来是乱码,但哪怕只对数组里面一个元素赋值,之后未被赋值的元素也会默认赋值为0

3. 一维数组的使用

3.1 下标引用操作符

3.2 数组的输入

4. 一维数组在内存中的存储


1. 数组的概念

数组是一组相同类型元素的集合

注意;数组中可以存放一个或者多个数据,但是不能让数组里面的元素个数为0

数组中存放的每一个数据,它们的类型是相同的

数组分为一维数组和多维数组,多维数组中常见的一般为二维数组

2. 一维数组的创建及其初始化

2.1 数组的创建

一维数组创建的语法如下:

type(类型) arr_name[常量值]

其中type就是对数组中所存放的数据类型做出一个定义,这个类型可以是char、int、short int、double等等类型的数据

arr_name值得就是数组的名字,这个名字可以由程序员自己根据实际情况而起名

常量值就是用来指定数组的大小的,这个数组的大小是根据实际的需求指定的

比如现在我想要创建一个数组来存放我们学校1000个人的年龄大小

就如上图这样,这个数组就创建成功了

数组里面元素的类型和数组的名字,都是我们根据情况所设定的

比如数组就还可以用来存放名字,体重

2.2 数组的初始化

在我们之前学习变量的时候,我们就知道我们一开始需要给变量赋值,这被称为变量的初始化,同理,我们根据我们的需要创建了数组后,那我们自然也同样需要对数组进行一个初始化

那么数组应该如何进行初始化呢???

数组的初始化一般使用大括号进行,只需要将数据放入大括号里面即可

这样便将age数组里面的五个元素分别初始化为5,4,3,2,1

那肯定有人想问了,如果我们不初始化数组的话,数组里面的元素默认会是几呢?

大家可以看到,如果不初始化数组,那么打印数组内部的各个元素出来的将会是一些乱码

那又有一个问题了,将数组每一个元素都需要一个一个的初始化实在是太麻烦了,如果我们只初始化几个,那剩下的未被初始化的数组元素打印出来还会是乱码吗?

可以看得到,在我们只对数组一个元素命名为0时,其他元素最后也默认为0

而我们对数组一个元素命名为其他数字的时候,其他未被命名的数组元素也同样默认为0

考点总结:当我们未对数组进行初始化时,数组里面的元素打印出来是乱码,但哪怕只对数组里面一个元素赋值,之后未被赋值的元素也会默认赋值为0

所以我们经常对数组初始化采用只对数组里面第一个元素赋值为0,来进行数组的初始化

2.3 数组的类型

数组本身也是有类型的,但数组的类型和我们之前学习到的变量的类型是有很大区别的,比如上面所写的

int  age  [5]

char name[5]

这些数组的类型实际上就是去除数组名之后剩下的东西

比如第一个数组的数组类型就是:int  [5]

下一个就是:char [5]

3. 一维数组的使用

3.1 下标引用操作符

我们可以用一维数组来存放我们的数据,那么我们存放之后如何提取呢???

这就要提到一个操作符:下标引用操作符[ ]

C语言本身规定数组是有下标的,下标从0开始,如果数组有n个元素,那么最后一个元素的下标就是n-1,下标本身就相当于数组里面每一个元素的代号

当我们需要具体提取哪一个数组元素的时候,使用下标引用操作符就会变得十分简单

现在我们来实践一下,使用下标引用操作符精确找到我们在数组中所存储的信息

通过下标引用操作符,我们就精确打印出了下标为三的数组元素,这其实也侧面反映了,在我们对于数组进行初始化的时候,是按照从左到右的顺序依次给下标为0,下标为1等等的数组元素进行赋值

3.2 数组的输入

在明白了下标引用操作符的工作原理之后,我们就可以继续让我们自己输入数据到数组里面存储起来了

4. 一维数组在内存中的存储

前面的知识就是对一维数组的使用,但为了让大家更加深入了解一维数组,我们要先深入了解一下数组在内存之中的存储

我们先来依次打印出数组元素的地址看看

如上图所示,我们仔细观察一下这些数组元素的地址我们就可以发现,下一个元素的地址比上一个元素的地址要多上4

这里额外补充一点,在十六进制中,10用a表示,11用b表示,12用c表示,以此类推

所以上面的C实际上就是12的意思

总结:数组中的元素随着下标的增长,地址是由小到大逐渐变化的,而每两个元素之间相差四,正是因为一个整型类型所占的空间是四个字节

所以我们可以知道数组在内存中是连续存放的

这篇关于从最浅层剖析C语言——第四节(超详细讲解一维数组内容)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1105140

相关文章

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

使用SpringBoot创建一个RESTful API的详细步骤

《使用SpringBoot创建一个RESTfulAPI的详细步骤》使用Java的SpringBoot创建RESTfulAPI可以满足多种开发场景,它提供了快速开发、易于配置、可扩展、可维护的优点,尤... 目录一、创建 Spring Boot 项目二、创建控制器类(Controller Class)三、运行

springboot整合gateway的详细过程

《springboot整合gateway的详细过程》本文介绍了如何配置和使用SpringCloudGateway构建一个API网关,通过实例代码介绍了springboot整合gateway的过程,需要... 目录1. 添加依赖2. 配置网关路由3. 启用Eureka客户端(可选)4. 创建主应用类5. 自定

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2