C 语言中的数组
                           
天天向上
发布: 2025-03-30 22:04:39

原创
289 人浏览过

在 C 语言中,数组是存储多个相同类型数据的集合。数组的每个元素通过索引来访问,索引从 0 开始。数组是存储数据的基础数据结构之一,广泛应用于数据处理和算法实现。

1. 数组的定义

数组定义的语法格式为:

type array_name[array_size];
  • type:数组中每个元素的类型。
  • array_name:数组的名称,用于标识数组。
  • array_size:数组中元素的个数,必须是常量表达式。

示例:定义一个整数类型的数组

int arr[5];  // 定义一个包含 5 个整数元素的数组

在上述示例中,arr 是一个可以存储 5 个整数的数组。


2. 数组的初始化

数组可以在定义时进行初始化,也可以在后续赋值。数组初始化的两种方式如下:

2.1 静态初始化

静态初始化即在定义数组时直接赋值。数组中的元素按顺序初始化,如果初始化元素少于数组的大小,剩余的元素会被默认赋值为 0。

int arr[5] = {1, 2, 3, 4, 5};  // 定义并初始化一个包含 5 个元素的整数数组

如果初始化时没有为所有元素指定值,未指定的元素会被自动赋值为 0:

int arr[5] = {1, 2};  // 数组 arr 的前两个元素被赋值为 1 和 2,其余元素为 0

2.2 动态初始化

动态初始化是通过在程序运行时逐个赋值给数组元素。

int arr[5];
arr[0] = 1;  // 数组第一个元素赋值为 1
arr[1] = 2;  // 数组第二个元素赋值为 2
arr[2] = 3;  // 数组第三个元素赋值为 3
arr[3] = 4;  // 数组第四个元素赋值为 4
arr[4] = 5;  // 数组第五个元素赋值为 5

3. 访问数组元素

数组元素是通过索引访问的,索引从 0 开始。例如,第一个元素的索引是 0,第二个元素的索引是 1,依此类推。

#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};

    printf("数组的第一个元素:%d\n", arr[0]);
    printf("数组的第三个元素:%d\n", arr[2]);

    return 0;
}

输出:

数组的第一个元素:1
数组的第三个元素:3

4. 多维数组

C 语言支持多维数组。常见的多维数组是二维数组,表示矩阵或表格结构。二维数组定义的语法如下:

type array_name[row_size][column_size];
  • row_size:数组的行数。
  • column_size:数组的列数。

示例:二维数组的定义与初始化

#include <stdio.h>

int main() {
    int arr[2][3] = {
        {1, 2, 3},
        {4, 5, 6}
    };

    // 访问二维数组元素
    printf("arr[0][0] = %d\n", arr[0][0]);
    printf("arr[1][2] = %d\n", arr[1][2]);

    return 0;
}

输出:

arr[0][0] = 1
arr[1][2] = 6

4.1 动态二维数组

C 语言中的二维数组实际上是一个数组的数组。在动态内存分配的情况下,我们可以使用 malloccalloc 来分配二维数组。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int rows = 2, cols = 3;
    int **arr = (int **)malloc(rows * sizeof(int *));  // 分配行指针数组

    for (int i = 0; i < rows; i++) {
        arr[i] = (int *)malloc(cols * sizeof(int));  // 为每一行分配内存
    }

    // 初始化数组
    arr[0][0] = 1;
    arr[0][1] = 2;
    arr[0][2] = 3;
    arr[1][0] = 4;
    arr[1][1] = 5;
    arr[1][2] = 6;

    // 打印数组
    printf("arr[0][0] = %d\n", arr[0][0]);
    printf("arr[1][2] = %d\n", arr[1][2]);

    // 释放内存
    for (int i = 0; i < rows; i++) {
        free(arr[i]);
    }
    free(arr);

    return 0;
}

输出:

arr[0][0] = 1
arr[1][2] = 6

5. 数组的指针

在 C 语言中,数组的名称可以视为指向数组第一个元素的指针。通过指针也可以访问数组中的元素。

示例:数组与指针的关系

#include <stdio.h>

int main() {
    int arr[3] = {10, 20, 30};
    int *p = arr;  // p 指向数组的第一个元素

    printf("p[0] = %d\n", p[0]);  // 使用指针访问数组元素
    printf("*(p + 1) = %d\n", *(p + 1));  // 使用指针偏移访问数组元素

    return 0;
}

输出:

p[0] = 10
*(p + 1) = 20

在这个例子中,arr 是一个数组,p 是一个指针,指向数组的第一个元素。通过 p[0] 或者 *(p + 1) 可以访问数组的元素。


6. 数组的大小

可以使用 sizeof 运算符来获取数组的大小(即元素个数)。需要注意的是,sizeof 返回的是字节数,因此在获取数组元素个数时,需要将字节数除以单个元素的字节大小。

#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int size = sizeof(arr) / sizeof(arr[0]);  // 计算数组的元素个数
    printf("数组的元素个数:%d\n", size);
    return 0;
}

输出:

数组的元素个数:5

总结

  • 数组定义:数组是一个固定大小的连续内存块,用于存储相同类型的元素。
  • 初始化:数组可以静态初始化或动态初始化。
  • 访问元素:通过索引访问数组的元素,索引从 0 开始。
  • 多维数组:C 语言支持二维及更高维度的数组,通常用于表示矩阵或表格。
  • 数组与指针:数组名作为指针使用,指针可以通过偏移访问数组元素。
  • 数组大小:可以通过 sizeof 运算符来获取数组的大小(元素个数)。
发表回复 0

Your email address will not be published. Required fields are marked *