Lazy loaded image
C语言中的数组(C11)
字数 1758阅读时长 5 分钟
2025-10-6
2025-10-6
password
comment
type
status
date
slug
summary
tags
category
icon

C语言中的数组

C语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
数组的声明并不是声明一个个单独的变量,比如 hzau0hzau1、...、hzau99,而是声明一个数组变量,比如hzau,然后使用hzau[0]hzau[1]、...、hzau[99] 来代表一个个单独的变量。
所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。
数组中的特定元素可以通过索引访问,第一个索引值为0
C语言还允许我们使用指针来处理数组,这使得对数组的操作更加灵活和高效。

声明数组

在C语言中要声明一个数组,需要指定元素的类型和元素的数量,如下所示:
这叫做一维数组。arraySize必须是一个大于零的整数常量,type可以是任意有效的C语言数据类型。例如,要声明一个类型为double的包含10个元素的数组balance,声明语句如下:
现在balance是一个可用的数组,可以容纳10个类型为double的数字。

初始化数组

在C语言中,我们可以逐个初始化数组,也可以使用一个初始化语句,如下所示:
大括号{ }之间的值的数目不能大于我们在数组声明时在方括号[ ]中指定的元素数目。
如果省略掉了数组的大小,数组的大小则为初始化时元素的个数。因此,如果:
那么将创建一个数组,它与前一个实例中所创建的数组是完全相同的。下面是一个为数组中某个元素赋值的实例:
上述的语句把数组中第五个元素的值赋为50.0。所有的数组都是以0作为它们第一个元素的索引,也被称为基索引,数组的最后一个索引是数组的总大小减去1。以下是上面所讨论的数组的的图形表示:
 
notion image

访问数组元素

数组元素可以通过数组名称加索引进行访问。元素的索引是放在方括号内,跟在数组名称的后边。例如:
上面的语句将把数组中第10个元素的值赋给salary变量。下面的实例使用了上述的三个概念,即,声明数组、数组赋值、访问数组:
当上面的代码被编译和执行时,它会产生下列结果:

获取数组长度

数组长度可以使用sizeof运算符来获取数组的长度,例如:
使用宏定义:
以上实例输出结果为:

数组名

在C语言中,数组名表示数组的地址,即数组首元素的地址。当我们在声明和定义一个数组时,该数组名就代表着该数组的地址。
例如,在以下代码中:
在这里,myArray是数组名,它表示整数类型的数组,包含5个元素。myArray也代表着数组的地址,即第一个元素的地址。
数组名本身是一个常量指针,意味着它的值是不能被改变的,一旦确定,就不能再指向其他地方。
我们可以使用&运算符来获取数组的地址,如下所示:
在上面的例子中,ptr指针变量被初始化为myArray的地址,即数组的第一个元素的地址。
需要注意的是,虽然数组名表示数组的地址,但在大多数情况下,数组名会自动转换为指向数组首元素的指针。这意味着我们可以直接将数组名用于指针运算,例如在函数传递参数或遍历数组时:
在上述代码中,printArray函数接受一个整数数组和数组大小作为参数,我们将myArray数组名传递给函数,函数内部可以像使用指针一样使用arr数组名。

C语言中数组的详解

在C语言中,数组是非常重要的,我们需要了解更多有关数组的细节。下面列出了C语言程序员必须清楚的一些与数组相关的重要概念:
概念
描述
C语言支持多维数组。多维数组最简单的形式是二维数组。
传递数组给函数
我们可以通过指定不带索引的数组名称来给函数传递一个指向数组的指针。
从函数返回数组
C语言允许从函数返回数组。
指向数组的指针
我们可以通过指定不带索引的数组名称来生成一个指向数组中第一个元素的指针。
静态数组与动态数组
静态数组在编译时分配内存,大小固定,而动态数组在运行时手动分配内存,大小可变。
上一篇
C语言的作用域规则(C10)
下一篇
C语言中的枚举(C12)

评论
Loading...