C语言中 数组的深入讲解(你确定不进来看看?)

本文详细讲解了C语言中的数组,包括一维数组的定义、初始化、排序(冒泡排序和选择排序),二维数组的定义、初始化和遍历。还探讨了数组的内存分配和元素访问,以及多维数组的概念。
摘要由CSDN通过智能技术生成

什么是数组?

数组是一个固定长度的存储相同类型的的数据结构,数组中的元素被存储在一段连续的内存空间中。它是最简单的数据结构之一

int[] array = 10

这样不就创建了一个长度为10的数组,数组是用来存放数据的

对于数组,人家是有序数据的集合,在内存中展示。就是人家需要连续的内存空间

一维数组的定义与初始化

一维数组指的只有一个下标的数组,它用来表示一组类型相同的数据
格式:

类型说明符 数组名[常量表达式];

在上面格式中,
类型说明符表示数组中所有元素的类型
常量表达式指的是数组的长度,也就是数组中存放元素的个数
下面定义一个大小为10的int类型数组:

int array[10];

其中,int是数组的类型,array[ ]是数组的名称,方括号[ ]中的10是数组的长度

定义一个数组只是为数组开辟了一块内存空间,这时如果想使用数组操作数据,还需要对数组进行初始化

数组初始化,是对谁初始化

数组初始化不是对数组变量初始化,而是对数组对象进行初始化,无非就是告诉内存,我要创建一个数组,你的给我分配一块连续的内存。

数组下标是从0开始的,数组这家伙是一个数据集合,有序的,而且每个数据的类型都是相同的,

一个大大的特点,人家支持随机访问,这个就是可以使用下标访问数组的特性

数组初始化的方式有三种:

  1. 直接对数组中的元素进行赋值
int i[1]={
   1,2,3,4,5,6,7,8,9,10};

上述代码定义了一个长度为10的整型数组i,数组中的元素依次为1,2,3,4,5,6,7,8,9,10

  1. 只对数组中的一部分元素进行赋值
int i[10]={
   1,2,3,4,5};

上述代码定义了一个长度为10的整型数组i,但在初始化时,只对数组中的前五个元素进行赋值,其他元素的值会被默认为0.
所以数组中的元素依次为1,2,3,4,5,0,0,0,0,0

  1. 对数组全部元素赋值,但不指定长度
int i[]={
   1,2,3,4,5};

在上述代码中,数组i中的元素有5个,系统会根据给定初始化元素的个数定义数组的长度,因此数组的i长度为5

上面的每一个格子都可以看做是一个内存单元,现在我们创建的内存为10的整型数组,蓝色的即为我们所创建的数组,红色的表示被占用。

数组能存储啥

你创建什么类型的数组,你就存放什么类型的数据
数组其实是一个特殊的对象

一维数组的访问

一维数组的访问包括读取指定元素和遍历数组

  1. 读取指定元素
    在程序中,我们需要访问数组中的一些元素,这时我们可以通过数组名和下标来访问数组中的元素
    格式:
数组名 [需要元素的下标]
  1. 遍历一维数组
    依次访问数组中的每一个元素,这种操作称为数组的遍历

通常遍历数组只用循环语句实现,以数组的元素的下标作为循环条件,只要数组元素下标有效就可以获取数组元素

#include<stdio.h>
int main(void)
{
   
	int a[10];//定义一个名字为a的整型数组,a中的元素有10个
	for(int i=0;i<10;i++)
	{
   
		a[i]=i;//为元素赋值
		printf("%d\n",a[i]);//for循环遍历每一个元素
	}
	return 0;
}
运行结果
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9

对数组元素排序

冒泡排序

冒泡即整个过程跟水中气泡上升的原理相似

原理:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来
请添加图片描述

此处引用网上一张比较经典的gif,我是在博主:解梦者看到的。。。。。,由这张图可以看出冒泡排序的整个过程:
在这里插入图片描述

其中最重要的格式:

for(i=0;i<n-1;i++)
{
   
	for(j=0;j<n-1-i;j++)
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极具浪漫主义色彩的菜鸟学习之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值