C语言中,数组是一种用于存储多个相同类型数据的集合。数组的元素在内存中是连续存储的,可以通过索引访问。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。 这些有序排列的同类数据元素的集合称为数组。本文主要介绍C语言数组。

1、C语言数组

数组用于将多个值存储在单个变量中,而不是为每个值声明单独的变量。

要声明数组,要使用方括号定义变量类型:

int myNum[6];

下面声明了一个包含int数组的变量。要向其中插入值,我们可以使用数组字面量,就是将值放在以逗号分隔的花括号内,例如:

int myNum[6] = {89,85,90,75,69,95};

或者部分初始化,其余元素会被自动赋值为0

int myNum[6] = {1, 2}; // myNum = {1, 2, 0, 0, 0}

要创建字符数组,可以编写:

char myName[10] = "cjavapy"; 

2、访问数组中元素

可以通过数组索引来访问数组元素。

该语句访问myNum中第一个元素的值:

例如:

int myNum[6] = {89,85,90,75,69,95};
printf("%d\n",myNum[0]);
// 输出89

注意:数组索引以0开头:[0]是第一个元素。 [1]是第二个元素,依此类推。

#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    
    // 访问第一个元素
    printf("arr[0] = %d\n", arr[0]); // 输出 1
    
    // 修改第二个元素
    arr[1] = 10;
    printf("arr[1] = %d\n", arr[1]); // 输出 10
    
    return 0;
}

3、修改数组中元素

要更改指定元素的值,可以使用数组索引来修改,

例如:

int myNum[6] = {89,85,90,75,69,95};
printf("%d\n",myNum[0]);
myNum[0] = 100;
printf("%d\n",myNum[0]);

4、数组长度

在C语言中,要找出一个数组有多少个元素,可以通过sizeof()计算:

例如:

int myNum[6] = {89,85,90,75,69,95};
printf("%d\n",sizeof(myNum)/sizeof(myNum[0]));

5、循环遍历数组

可以使用for循环遍历数组元素,并通过数据的长度来指定循环应运行的次数。

下面示例输出nums数组中的所有元素的三种方法:

1)下标法

#include <stdio.h>
void main(){
  int nums[]={0,1,2,3,4,5,6,7,8,9};
  int i;
  for(i=0;i<=9;i++){
    printf("%d\n",nums[i]);
  }
}

2)指针遍历取值

#include <stdio.h>
void main(){
  int nums[]={0,1,2,3,4,5,6,7,8,9};
  int i;
  for(i=0;i<=9;i++){
     printf("%d\n",*(nums + i)); // 这种写法和下标法其实是等价的,下标法也会转换为 * (nums + i),这种写法更加接近底层
  }
}

3)指针变量指向数组元素

#include <stdio.h>
void main(){
  int nums[]={0,1,2,3,4,5,6,7,8,9};
  int *p;
  for(p = nums;p<=(nums + 9);p++){
    printf("%d\n",*p);
  }
}

7、多维数组

多维数组是包含一个或多个数组的数组。C语言支持多维数组,最常见的是二维数组。

如果需要创建二维数组,需要将每个数组添加到其各自的大括号内:

例如:

int[][] myNumbers = { {1, 2, 3, 4}, {5, 6, 7} };

myNumbers现在是一个以两个数组为元素的数组。

要访问myNumbers数组的元素,请指定两个索引:一个用于数组,一个用于该数组内的元素。本示例访问myNumbers的第二个数组(索引下标为1)中的第三个元素(索引下标为2):

例如:

int myNumbers[2][3] = { {2, 3, 4}, {5, 6, 7} };
int x = myNumbers[1][2];
printf("%d\n",x); // 输出 7

也可以在通过嵌套for循环来获取二维数组的元素(需要指向两个索引下标):

例如:

int myNumbers[2][3] = { {2, 3, 4}, {5, 6, 7} };
for (int i = 0; i < 2; ++i) {
  for(int j = 0; j < 3; ++j) {
    printf("%d\n",myNumbers[i][j]);
  }  
}

推荐文档