C程序怎么malloc以及访问二维数组
- 使用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循环释放二维数组的内存空间,释放的顺序要与分配的顺序相反。
- 访问二维数组
在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 著作权归作者所有。请勿转载和采集!