从最浅层剖析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

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优