C语言定义并初始化一个二维数组(利用指针数组)
C语言定义并初始化一个二维数组(利用指针数组),可以实现二位数组的每一行的元素个数不同
1.代码如下
#include <stdio.h>
#include <stdlib.h>
int main() {
// arr是一个指针数组,即这个数组的所有元素都是指针,每一个元素都指向一个int型数组,每一个int型数组的长度可以不同
int* arr[3] = {
(int*)malloc(sizeof(int) * 3), \
(int*)malloc(sizeof(int) * 6), \
(int*)malloc(sizeof(int) * 4)
};
for (int i = 0; i < 3; i++) {
// arr[0]是一个指针
scanf("%d", &arr[0][i]);
}
for (int i = 0; i < 6; i++) {
// arr[1]是一个指针
scanf("%d", &arr[1][i]);
}
for (int i = 0; i < 4; i++) {
// arr[2]是一个指针
scanf("%d", &arr[2][i]);
}
// 释放指针数组中的每一个指针所指向的内存空间, 并将指针置空
for (int i = 0; i < 3; i++) {
free(arr[i]);
arr[i] = NULL;
}
return 0;
}
2.代码可视化(pythontutor.com)
由于pythontutor.com不支持scanf的输入,因此去掉了代码中的scanf函数。但是不影响理解指针数组