21xrx.com
2024-11-22 09:36:21 Friday
登录
文章检索 我的文章 写文章
C语言中如何动态创建二维数组
2023-06-14 16:34:07 深夜i     --     --
C语言 动态创建 二维数组

在C语言中,动态创建二维数组的方法可以让程序在运行时确定数组的大小,提高程序的灵活性和可扩展性。下面详细介绍C语言如何动态创建二维数组。

1.使用指针实现动态创建二维数组

可以先用一个一维数组来存储行指针,然后在遍历数组时再为每一行分配相应大小的内存空间。具体代码如下所示:


int **arr;

int row, col;

// 获取行数和列数

printf("输入行数和列数:");

scanf("%d %d", &row, &col);

// 分配行指针的内存空间

arr = (int**)malloc(row * sizeof(int*));

// 遍历行指针,为每一行分配相应大小的内存空间

for (int i = 0; i < row; i++) {

  arr[i] = (int*)malloc(col * sizeof(int));

}

// 使用数组,操作数据

// 释放分配的内存空间

for (int i = 0; i < row; i++) {

  free(arr[i]);

}

free(arr);

2.使用一维数组实现动态创建二维数组

可以将二维数组看成一个一维数组,然后通过计算元素在一维数组中的下标来实现对二维数组的访问。具体代码如下:


int *arr;

int row, col;

// 获取行数和列数

printf("输入行数和列数:");

scanf("%d %d", &row, &col);

// 分配一维数组的内存空间

arr = (int*)malloc(row * col * sizeof(int));

// 使用数组,操作数据

// 释放分配的内存空间

free(arr);

3.使用二级指针实现动态创建二维数组

二级指针可以理解为指向指针的指针,使用二级指针分配动态内存空间时,可以动态分配行指针和列指针的内存空间。具体代码如下:


int **arr;

int row, col;

// 获取行数和列数

printf("输入行数和列数:");

scanf("%d %d", &row, &col);

// 分配行指针的内存空间

arr = (int**)malloc(row * sizeof(int*));

// 遍历行指针,为每一行分配相应大小的内存空间

for (int i = 0; i < row; i++) {

  arr[i] = (int*)malloc(col * sizeof(int));

}

// 使用数组,操作数据

// 释放分配的内存空间

for (int i = 0; i < row; i++) {

  free(arr[i]);

}

free(arr);

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复