认识一维数组和使用

简介: **数组概念与特性:**数组是一组相同类型元素的集合,包含至少一个元素。数组可分为一维和多维(如二维数组)。在创建时需指定大小和元素类型,如`int arr[5]`表示一个包含5个整数的数组。数组元素通过下标访问,下标从0开始。数组在内存中连续存放,可以通过`sizeof`计算数组占用的字节数以间接获取元素个数。

一、数组的概念

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


1.数组中存放的是一个或多个数据,但是数组元素个数不能为0


2.数组中存放的多个数据,这些数据的类型是相同的


(数组分为一维数组和多维数组,多维数组中最常见的是二维数组)


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


一维数组创建的基本语法:


type arr_name[常量值];


(1.type指存放的数据的类型,可以是自定义类型


2.arr_name是数组的名称,这个名字根据实际情况,起的有意义即可


3.常量值是数组中元素的个数)


例如:

int arr[5]

        char ch[8]


存放在数组中的值称为数组的元素,数组在创建的时候可以指定数组的大小和数组的元素类型


比如:存储某个班级20人的数学成绩


int math[20];



三、数组的初始化


数组在创建的时候有时需要给定初始值,这就称为数组的初始化,数组的初始化一般用大括号,把数据放在大括号中

 

如:

int date1[5]={1,2,3,4,5};

(完全初始化)

int date2[5]={1,2,3};

(不完全初始化,剩余的元素默认初始化为0)

int date3[3]={1,2,3,4,5};

(错误,初始化项太多)

int date4[ ]={1,2,3,4,5};


(数组如果初始化了,也可以省略掉数组的大小,编译器会根据数组的初始化内容,来确定数组的真实大小)


四、数组的类型


数组也是有类型的,数组算是一种自定义类型,去掉数组名留下的就是数组的类型


例如:


int arr1[10];

        int arr2[12];

        char ch[15];

arr1数组的类型是int[10]

arr2数组的类型是int[12]

ch数组的类型是char[15]


五、一维数组的使用


1.数组下标


C语言规定数组是有下标的,下标是从0开始的,假设数组有n个元素,最后一个元素的下标就是n-1,下标就相当于数组元素的编号


如下:



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


有了下标访问操作符,我们就可以轻松的访问到数组的元素,比如我们访问下标为7的元素,我们就可以使用arr[7],如下代码:



结果为:



六、数组元素的打印


如果想要访问整个数组的内容,只要使用for循环产生数组所有元素的下标即可


如下:



结果为:



七、数组的输入


如下:



结果为:




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


如:依次打印数组元素的地址



&--取地址


结果为:



从输出结果分析,数组随着下标的增长,地址是由小到大变化的,所以我们得出结论:数组在内存中是连续存放的


九、sizeof计算数组元素个数


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


如:



结果为:



这里输出的结果是40,计算的是数组所占内存空间的总大小,单位是字节

 

因为一个数组中所有元素的类型都是相同的,那么只要计算出一个元素所占字节的个数,数组的元素个数就能算出来


首先计算一个元素所占字节的个数




因为已经计算了数组所占内存空间的总大小,所以接下来直接计算数组个数



结果为:



则该数组中有10个元素

目录
相关文章
|
算法 PyTorch 计算机视觉
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
改进的yolov5目标检测-yolov5替换骨干网络-yolo剪枝(TensorRT及NCNN部署)-2
|
机器学习/深度学习 自然语言处理 机器人
【RAG实践】基于LlamaIndex和Qwen1.5搭建基于本地知识库的问答机器人
LLM会产生误导性的 “幻觉”,依赖的信息可能过时,处理特定知识时效率不高,缺乏专业领域的深度洞察,同时在推理能力上也有所欠缺。
|
设计模式 存储 缓存
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(二)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
329 0
|
人工智能 关系型数据库 分布式数据库
DB+AI会擦出怎样的火花?一站式带你了解阿里云瑶池数据库经典的AI产品服务与实践!
从 DB+AI 精选解决方案、特惠权益等,一站式带你了解阿里云瑶池数据库经典的AI产品服务与实践。
|
安全 Java 测试技术
如何避免静态变量初始化中的异常
在Java中,静态变量初始化时可能会遇到异常。为避免此类问题,可以采取以下措施:1. 使用静态代码块进行初始化;2. 确保初始化逻辑简单且安全;3. 捕获并处理可能的异常。这些方法能有效提高程序的健壯性和稳定性。
274 15
|
机器学习/深度学习 并行计算 PyTorch
探索PyTorch:张量的创建和数值计算
探索PyTorch:张量的创建和数值计算
|
传感器 安全 物联网
5G与物联网:加速产业数字化转型
【10月更文挑战第26天】
331 0
|
数据采集 大数据 Python
FFmpeg 在爬虫中的应用案例:流数据解码详解
在大数据背景下,网络爬虫与FFmpeg结合,高效采集小红书短视频。需准备FFmpeg、Python及库如Requests和BeautifulSoup。通过设置User-Agent、Cookie及代理IP增强隐蔽性,解析HTML提取视频链接,利用FFmpeg下载并解码视频流。示例代码展示完整流程,强调代理IP对避免封禁的关键作用,助你掌握视频数据采集技巧。
339 7
FFmpeg 在爬虫中的应用案例:流数据解码详解
|
Kubernetes 监控 网络协议
在K8S中,Pod不同探针有何区别?
在K8S中,Pod不同探针有何区别?
|
存储 机器人 API
初识LangChain的快速入门指南
LangChain是一个基于大语言模型用于构建端到端语言模型应用的框架,它提供了一系列工具、套件和接口,让开发者使用语言模型来实现各种复杂的任务,如文本到图像的生成、文档问答、聊天机器人等。
808 1