c语言动态分配三维数组
时间: 2023-08-24 19:09:31 浏览: 141
在C语言中,我们可以使用指针来动态分配三维数组。下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int ***arr;
int i, j, k;
int size1, size2, size3;
// 获取三维数组的大小
printf("请输入三维数组的大小:\n");
printf("第一维大小:");
scanf("%d", &size1);
printf("第二维大小:");
scanf("%d", &size2);
printf("第三维大小:");
scanf("%d", &size3);
// 动态分配内存
arr = (int ***)malloc(size1 * sizeof(int **));
for (i = 0; i < size1; i++) {
arr[i] = (int **)malloc(size2 * sizeof(int *));
for (j = 0; j < size2; j++) {
arr[i][j] = (int *)malloc(size3 * sizeof(int));
}
}
// 对数组赋值
for (i = 0; i < size1; i++) {
for (j = 0; j < size2; j++) {
for (k = 0; k < size3; k++) {
arr[i][j][k] = i + j + k;
}
}
}
// 输出数组元素
printf("三维数组的元素为:\n");
for (i = 0; i < size1; i++) {
for (j = 0; j < size2; j++) {
for (k = 0; k < size3; k++) {
printf("%d ", arr[i][j][k]);
}
printf("\n");
}
printf("\n");
}
// 释放内存
for (i = 0; i < size1; i++) {
for (j = 0; j < size2; j++) {
free(arr[i][j]);
}
free(arr[i]);
}
free(arr);
return 0;
}
```
在上面的示例代码中,我们首先定义了一个`int ***arr`指针,它将用于指向三维数组。然后,我们使用`malloc`函数动态分配内存,分配了三维数组的空间。接下来,我们可以使用嵌套的循环对数组进行赋值和访问操作。最后,记得在程序结束前释放内存,以避免内存泄漏。
阅读全文