C语言数组基础篇
前言
上章节讲到C语言的递归,详细内容请参见上章节。本章节主要给大家讲解批量处理数据,C语言中的数组。
C语言中的数组
当我们处理大量数据值时,我们需要任意数量的不同变量。随着变量数量的增加,程序的复杂性也会增加,因此程序员会对变量名称感到困惑。在某些情况下,我们需要处理大量类似的数据值。为了使这项工作更容易,C编程语言提供了一个名为“数组”的概念。
数组是一种特殊类型的变量,用于一次存储多个相同数据类型的值。
数组是存储在具有单个名称的连续内存位置中的类似数据项的集合。
数组声明
在C语言中,当我们想要创建一个数组时,我们必须知道要存储在该数组中的值的数据类型以及要存储在该数组中的值的数量。
创建一个数组语法: 类型 数组名[size]
创建具有大小和初始值的数组的语法:类型 数组名[size]={value1,value2,...};
创建没有大小和初始值的数组的语法:类型 数组名[size]={value1,value2,...};
在上面的语法中,数据类型指定我们存储在该数组中的值的类型,size指定可以存储在该数组中的最大值数。
示例代码
int a [3] ;
这里,编译器使用单个名称“a”分配6个字节的连续内存位置,并告诉编译器将三个不同的整数值(每个内存为2个字节)存储到该6个字节的内存中。对于上述声明,内存组织如下:
在上面的内存分配中,所有三个内存位置都有一个通用名称“a”。因此无法直接访问单个内存位置。因此,编译器不仅分配内存,还为数组的每个单独的内存位置分配一个数字引用值。该参考编号称为“索引”或“下标”或“索引”。以上示例的索引值如下:
访问数组中的元素
使用'arrayName'和'indexValue'的组合来标识数组的各个元素。我们使用以下通用语法来访问数组的各个元素:
数组名[数组下标];
对于上面的例子,各个元素可以表示如下:
例如,如果我们想要将值赋给上面数组'a'的第二个内存位置,我们使用以下语句...
示例代码
a [1] = 100 ;
上述转让声明的结果如下:
C语言数组分类
在c编程语言中,数组分为两种类型。它们如下:
一维数组
在c编程语言中,一维数组用于存储相同数据类型的值列表。换句话说,单一维数组用于存储一行值。在单维数组中,数据以线性形式存储。
一维数组的声明:datatype arrayName [size];
示例代码
int rollNumbers [60] ;
上述单维数组的声明保留了60个连续的2个字节的存储单元,每个存储单元的名称为rollNumbers,并告诉编译器只允许整数值进入这些存储单元。
一维数组的初始化
我们使用以下通用语法来声明和初始化具有大小和初始值的单维数组。
datatype arrayName [size] = {value1,value2,...};
示例代码
int marks [6] = { 89, 90, 76, 78, 98, 86 } ;
上述单维阵列声明保留6个连续的2字节存储位置,每个存储位置带有名称标记,并在第一存储位置初始化为值89,在第二存储位置初始化为90,在第三存储位置为76,在第四存储位置为78,在98第五个内存位置和第六个内存位置86。
我们还可以使用以下通用语法初始化单维数组,而无需指定大小和初始值。
datatype arrayName [] = {value1,value2,...};
如果在未指定任何大小的情况下创建数组,则必须初始化该数组。在这种情况下,基于初始化的值的数量来确定阵列的大小。
示例代码
int marks [] = { 89, 90, 76, 78, 98, 86 } ; char studentName [] = "btechsmartclass" ;
在上面的示例声明中,数组'marks'的大小为6,数组'studentName'的大小为16。这是因为在字符数组的情况下,编译器在末尾存储一个名为\ 0(NULL)的exttra字符。
访问单维数组的元素
在c编程语言中,要访问单维数组的元素,我们使用数组名称,后跟要访问的元素的索引值。这里索引值必须用方括号括起来。数组中元素的索引值是在存储器分配时给予每个元素的引用号。单维数组的索引值以第一个元素的零(0)开始,并且每个元素的值增加一。数组中的索引值也称为下标或索引。
我们使用以下一般语法来访问单维数组的各个元素:arrayName [indexValue]
示例代码
marks [2] = 99 ;
在上面的语句中,'marks'数组的第三个元素被赋值为'99'。
多维数组
数组数组称为多维数组。简单来说,使用多个维度(大小)创建的数组称为多维数组。多维数组可以是二维数组或三维数组或四维数组或更多...
最常用和常用的多维数组是二维数组。二维数组用于以表格的形式存储数据。我们还使用二维数组来创建数学矩阵。
二维数组声明
我们使用以下通用语法来声明二维数组:datatype arrayName [rowSize] [columnSize];
示例代码
int matrix_A [2][3] ;
二维阵列储量的形式的每个2个字节6个连续存储器位置中的上面的声明2行和3列。
二维阵列的初始化
我们使用以下通用语法来声明和初始化具有特定行数和带有初始值的coloumns的二维数组。
datatype arrayName [rows] [colmns] = {{r1c1value,r1c2value,...},{r2c1,r2c2,...} ...};
示例代码
int matrix_A [2][3] = { {1, 2, 3},{4, 5, 6} } ;
上述二维阵列声明以2行3列的形式保留6个连续的2个字节的存储位置。并且第一行用值1,2和3初始化,第二行用值4,5和6初始化。
我们也可以初始化如下......
示例代码
int matrix_A [2][3] = { {1, 2, 3}, {4, 5, 6} } ;
访问二维数组的单个元素
在ac编程语言中,为了访问二维数组的元素,我们使用数组名称,后跟行索引值和要访问的元素的列索引值。这里行和列索引值必须用单独的方括号括起来。在二维数组的情况下,编译器为行和列分配单独的索引值。
通用语法来访问二维数组的各个元素:arrayName [rowIndex] [columnIndex]
示例代码
matrix_A [0][1] = 10 ;
在上面的语句中,具有行索引0和matrix_A数组的列索引1的元素被赋值为10。
数组在C语言中的应用
在c语言中,数组用于广泛的应用程序。其中很少如下
●数组用于存储值列表
在c语言中,单维数组用于存储相同数据类型的值列表。换句话说,单维数组用于存储一行值。在单维阵列中,数据以线性形式存储。
●数组用于执行矩阵运算
我们使用二维数组来创建矩阵。我们可以使用二维数组对矩阵执行各种操作。
●数组用于实现搜索算法
我们使用单维数组来实现搜索算法
线性搜索
二进制搜索
●数组用于实现排序算法
我们使用单维数组来实现排序算法
插入排序
冒泡排序
选择排序
快速排序
合并排序等,
●数组用于实现数据结构
我们使用单维数组来实现数据结构
堆栈使用数组
队列使用数组
●数组也用于实现CPU调度算法
这些内容将会在数据结构篇章中详细讲解
尾言
对于数组应用在这里做个简单介绍,更多的内容大家可以自行完善,或者等待更新,到时候会分类给你们编写专栏介绍。
本章节作业:使用C语言一维数组和二维数组实现以下表格数据的输入和打印
只有投入才有回报,只有忠诚才有责任,只有主动才有创新,没有付出就没有收获。