欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

C语言 数组

最编程 2024-07-19 18:40:48
...

一.数组的概念

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

  • 数组中存放的是一个或多个数据,数组元素的个数不能为0
  • 数组中存放的多个数据,类型是相同的
  • 数组分为一维数组和多维数组,多维数组比较常见的是二维数组

二.数组的创建和初始化

1.数组的创建

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

  • type指定的是数组中存放数据的类型,可以是:char,short,int,float等,也可以自己定义类型
  • arr_name 指的是数组名的名字,这个名字尽量取的有意义
  • []中的常量值是用来指定数组的大小的,这个数组的大小根据实际需求指定。在数组创建的时候,[]只能是常量。

C语言 数组_二维数组

  • C99之前数组的大小只能是常量指定,不能使用变量。
  • C99之后为什么就能使用变量了呢?---变长数组
  • 用法类型

C语言 数组_初始化_02

2.数组的初始化

初始化的概念:给定初始值数组的初始化一般都放在大括号中。例如:

C语言 数组_初始化_03

如果数组初始化了,是可以省略掉数组大小的。数组的大小,是编译器根据初始化的内容确定的

3.数组的类型

数组是[[C语言 数据类型和变量|自定义类型]],去掉数组名留下的就是数组的类型

C语言 数组_数组_04


三.一维数组的使用

一维数组可以存放数据,存放数据的目的是对数据的操作,那我们如何使用一维数组呢?

1.数组下标

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

C语言 数组_数组_05

  • 数组就是通过下标来进行访问的。为此,C语言提供了下标引用操作符---[],具体操作:

C语言 数组_数组_06

  • 数组不能分配常量为0的数组

2.数组的打印与输入

a.打印

C语言 数组_初始化_07

b.输入

C语言 数组_二维数组_08

  • 由此可以见的,下标的范围是可以灵活控制的

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

依次打印地址

C语言 数组_二维数组_09

C语言 数组_数组_10

  • 从输出的结果我们分析,数组随着下标的增⻓,地址是由⼩到⼤变化的,并且我们发现每两个相邻的 元素之间相差4(因为⼀个整型是4个字节)。所以我们得出结论:数组在内存中是连续存放的。这就 为后期我们使⽤指针访问数组奠定了基础(在讲指针的时候我们在讲,这⾥暂且记住就⾏)。

五.sizeof计算数组元素个数

  • [C语言 数据类型和变量]概念
  • 求数组元素个数的写法

C语言 数组_二维数组_11


六.二维数组的创建

1.概念

数组的元素都是内置类型的,如果我们把一维数组作为数组的元素,这时候就是二维数组,二维数组作为数组元素的数组叫做三维数组,二维数组以上的数组叫做多维数组。

C语言 数组_二维数组_12

2.二维数组的创建

  • 语法如下:

C语言 数组_二维数组_13

  • 3表示3行,5表示5列
  • int 表⽰数组的每个元素是整型类型
  • arr是数组名,可以根据⾃⼰的需要指定名字data数组意思基本⼀致。

七.二维数组的初始化

  • 与一维数组的初始化基本相同,下面是二维数组的不完全初始化

C语言 数组_数组_14

  • 完全初始化:

C语言 数组_初始化_15

  • 初始化的同时也可以指定行:

C语言 数组_二维数组_16

  • 初始化时可以省略行,但不能省略列:

C语言 数组_二维数组_17

  • 一行放不下的,会放到第二行

八.二维数组的使用

1.二维数组的下标

与一维数组相同,二维数组也可以通过下标锁定元素。C语⾔规定,⼆维数组的⾏是从0开始的,列也是从0开始的

a.打印

C语言 数组_数组_18

b.输入

C语言 数组_二维数组_19


九.二维数组在内存中的存储

打印地址如下

C语言 数组_初始化_20

  • 分析得:以⼆维数组中的每个元素都是连续存放的

C语言 数组_二维数组_21

  • 了解清楚⼆维数组在内存中的布局,有利于我们后期使⽤指针来访问数组的学习。

十.C99中的变长数组

  • **在C99 之前创建数组的方式,数组的大小是使用常量,常量表达式指定的
  • C99中,引入了变长数组的概念,允许数组的大小是变大的

C语言 数组_二维数组_22

  • 数组的大小根据输入变量值的大小来确定它的大小
  • 变长数组是不能初始化的
  • 变长数组的边长仅仅是指数组的大小可以用变量指定,并不是数组的大小可以变化的。只是说,我们每一次运行起来开一根据我们的需要给n输入值。