学习目标:
C语言的动态开辟一维数组和二维数组学习内容:
- 动态开辟一维数组
int num = 10;
//开辟空间
int* num_arr = malloc(num * sizeof(int));
//赋值
for (int i = 0; i < num; ++i) {
*(num_arr + i) = i * 2 + 1;
}
//输出
for (int i = 0; i < num; ++i) {
printf("%d\t",num_arr[i]);
}
//释放
free(num_arr);
num_arr = NULL;
输出结果:
1 3 5 7 9 11 13 15 17 19
图解示例:
- 动态开辟二维数组
代码示例:
int num_i = 3;
int num_j = 10;
//动态开辟数组
int **double_array = (int **) malloc(num_i * sizeof(int *));
for (int i = 0; i < num_i; i++) {
double_array[i] = (int *) malloc(num_j * sizeof(int));
}
//赋值
for (int i = 0; i < num_i; ++i) {
for (int j = 0; j < num_j; ++j)
double_array[i][j] = (i + 1) * j;
}
//打印
for (int i = 0; i < num_i; ++i) {
for (int j = 0; j < num_j; ++j) {
printf(" %d\t ", *(*(double_array + i) + j));
}
printf("\n");
}
//释放
for (int i = 0; i < num_i; ++i) {
free(double_array[i]);
double_array[i] = NULL;
}
free(double_array);
double_array = NULL;
输出结果:
0 1 2 3
0 2 4 6
0 3 6 9
图解示例: