C语言二维数组指针动态创建详解及代码示例
二维数组指针动态创建可以通过以下步骤实现:
- 定义一个指向二维数组的指针,例如:int **arr;
- 分配内存空间,使用动态内存分配函数malloc(),例如:arr = (int **)malloc(rows * sizeof(int *));
- 分配每行的内存空间,使用动态内存分配函数malloc(),例如:for(int i=0; i<rows; i++) { arr[i] = (int *)malloc(cols * sizeof(int)); }
- 分配每列的内存空间,例如:for(int j=0; j<cols; j++) { arr[i][j] = (int *)malloc(cols * sizeof(int)); }
- 对二维数组进行初始化操作,例如:for(int i=0; i<rows; i++) { for(int j=0; j<cols; j++) { arr[i][j] = i+j; } }
- 使用完二维数组后,需要释放内存空间,使用动态内存释放函数free(),例如:for(int i=0; i<rows; i++) { for(int j=0; j<cols; j++) { free(arr[i][j]); } free(arr[i]); } free(arr);
完整代码示例:
int **arr;
int rows = 3;
int cols = 4;
arr = (int **)malloc(rows * sizeof(int *));
for(int i=0; i<rows; i++) {
arr[i] = (int *)malloc(cols * sizeof(int));
for(int j=0; j<cols; j++) {
arr[i][j] = i+j;
}
}
for(int i=0; i<rows; i++) {
for(int j=0; j<cols; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
for(int i=0; i<rows; i++) {
for(int j=0; j<cols; j++) {
free(arr[i][j]);
}
free(arr[i]);
}
free(arr);
通过以上步骤,即可实现二维数组指针的动态创建。需要注意的是,在使用完二维数组后,必须释放所有分配的内存空间,以避免内存泄漏。
原文地址: https://www.cveoy.top/t/topic/jEvT 著作权归作者所有。请勿转载和采集!