多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
#### 12. 数组 C 语言支持**数组**数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。 数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers\[0\]、numbers\[1\]、...、numbers\[99\] 来代表一个个单独的变量。数组中的特定元素可以通过索引访问。 所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。 **声明数组** 在 C 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示: ~~~ type arrayName [ arraySize ]; ~~~ 这叫做一维数组。**arraySize** 必须是一个大于零的整数常量,**type** 可以是任意有效的 C 数据类型。例如,要声明一个类型为 double 的包含 10 个元素的数组 **balance**,声明语句如下: ~~~ double balance[10]; ~~~ **初始化数组** ~~~ void main(){ double balance[10] = {1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0} } ~~~ 大括号 { } 之间的值的数目不能大于我们在数组声明时在方括号 \[ \] 中指定的元素数目。 如果您省略掉了数组的大小,数组的大小则为初始化时元素的个数。因此,如果: ~~~ void main(){ double balance[] = {1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0} } ~~~ 您将创建一个数组,它与前一个实例中所创建的数组是完全相同的。下面是一个为数组中某个元素赋值的实例: ~~~ balance[1] = 50.5; ~~~ ![](https://user-gold-cdn.xitu.io/2019/12/17/16f13d16d558013f?imageView2/0/w/1280/h/960/format/webp/ignore-error/1) **访问数组元素** ~~~ //跟 Java 一样 double value = balance[1] ~~~ 例子: ~~~ void main() { //定义一个长度为 10 的整数数组 int n[10]; int i, j; //初始化数组元素 for (i = 0; i < 10; i++) { n[i] = 2 * i; } //输出元素中的数据 for (int k = 0; k < 10; ++k) { printf("Element[%d] = %d \n", k, n[k]); } //总的大小除以其中一个大小就得到了 数组长度 printf("整数数组 n 的长度: %d \n", sizeof(n) / sizeof(n[0])); //输出元素中的数据 for (int k = 0; k < sizeof(n) / sizeof(n[0]); ++k) { printf("Element[%d] = %d \n", k, n[k]); } } ~~~ 输出: ~~~ Element[0] = 0 Element[1] = 2 Element[2] = 4 Element[3] = 6 Element[4] = 8 Element[5] = 10 Element[6] = 12 Element[7] = 14 Element[8] = 16 Element[9] = 18 整数数组 n 的长度: 10 Element[0] = 0 Element[1] = 2 Element[2] = 4 Element[3] = 6 Element[4] = 8 Element[5] = 10 Element[6] = 12 Element[7] = 14 Element[8] = 16 Element[9] = 18 ~~~ **C 中数组详解** 在 C 中,数组是非常重要的,我们需要了解更多有关数组的细节。下面列出了 C 程序员必须清楚的一些与数组相关的重要概念: | 概念 | 描述 | | --- | --- | | [多维数组](https://www.runoob.com/cprogramming/c-multi-dimensional-arrays.html) | C 支持多维数组。多维数组最简单的形式是二维数组。 | | [传递数组给函数](https://www.runoob.com/cprogramming/c-passing-arrays-to-functions.html) | 您可以通过指定不带索引的数组名称来给函数传递一个指向数组的指针。 | | [从函数返回数组](https://www.runoob.com/cprogramming/c-return-arrays-from-function.html) | C 允许从函数返回数组。 | | [指向数组的指针](https://www.runoob.com/cprogramming/c-pointer-to-an-array.html) | 您可以通过指定不带索引的数组名称来生成一个指向数组中第一个元素的指针。 |