1. 使用malloc分配二维数组

在C语言中,可以使用malloc函数动态地分配二维数组的内存空间。下面是一个示例代码:

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

int main()
{
    int **arr;  // 声明二维数组指针
    int row, col, i, j;

    printf("请输入二维数组的行数和列数:");
    scanf("%d%d", &row, &col);

    // 分配二维数组的内存空间
    arr = (int **)malloc(row * sizeof(int *));
    for (i = 0; i < row; i++) {
        arr[i] = (int *)malloc(col * sizeof(int));
    }

    // 初始化二维数组
    for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            arr[i][j] = i * col + j;
        }
    }

    // 打印二维数组
    for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }

    // 释放二维数组的内存空间
    for (i = 0; i < row; i++) {
        free(arr[i]);
    }
    free(arr);

    return 0;
}

在上面的代码中,首先声明了一个二维数组指针arr,然后输入二维数组的行数和列数。接着使用malloc函数动态地分配二维数组的内存空间,分配的方式是先分配行数个指针,然后再分别为每个指针分配列数个整型空间。注意,二维数组中的每个元素都是一个整型数据。

初始化二维数组后,使用两个for循环打印出二维数组的内容。

最后,使用两个for循环释放二维数组的内存空间,释放的顺序要与分配的顺序相反。

  1. 访问二维数组

在C语言中,可以通过二维数组指针来访问二维数组,也可以通过二维数组名来访问二维数组。下面是两个示例代码:

#include <stdio.h>

int main()
{
    int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
    int i, j;

    // 使用二维数组名访问二维数组
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 4; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }

    // 使用二维数组指针访问二维数组
    int *p = (int *)arr;
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 4; j++) {
            printf("%d ", *(p + i * 4 + j));
        }
        printf("\n");
    }

    return 0;
}

在上面的代码中,首先定义了一个3行4列的二维数组arr,然后使用两个for循环打印出二维数组的内容。注意,使用二维数组名访问二维数组时,可以直接使用arr[i][j]来访问二维数组的元素;而使用二维数组指针访问二维数组时,需要将二维数组转换为一维数组,然后使用指针进行访问。

可以看到,二维数组指针的访问方式更加灵活,可以访问任意形状的二维数组。但是,使用二维数组名访问二维数组的语法更加简单,容易理解


原文地址: https://www.cveoy.top/t/topic/fDZf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录