动态内存分配
动态分配数组
#include <stdio.h>
#include <stdlib.h>
int main() {
int *array;
int n = 10;
// 动态分配内存
array = (int *)malloc(n * sizeof(int));
if (array == NULL) {
perror("malloc");
return 1;
}
// 初始化数组
for (int i = 0; i < n; i++) {
array[i] = i * i;
}
// 打印数组
for (int i = 0; i < n; i++) {
printf("%d ", array[i]);
}
printf("\n");
// 释放内存
free(array);
return 0;
}
###动态分配二维数组
#include <stdio.h>
#include <stdlib.h>
int main() {
int **array;
int rows = 3, cols = 4;
// 动态分配行
array = (int **)malloc(rows * sizeof(int *));
if (array == NULL) {
perror("malloc");
return 1;
}
// 动态分配每行的列
for (int i = 0; i < rows; i++) {
array[i] = (int *)malloc(cols * sizeof(int));
if (array[i] == NULL) {
perror("malloc");
return 1;
}
}
// 初始化二维数组
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
array[i][j] = i * cols + j;
}
}
// 打印二维数组
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", array[i][j]);
}
printf("\n");
}
// 释放内存
for (int i = 0; i < rows; i++) {
free(array[i]);
}
free(array);
return 0;
}