使用指针创建动态数组
Creating a dynamic array of arrays using pointers
我正在尝试创建一个动态数组。因此,例如,让我们看一下帕斯卡的三角形:
1
11
121
1331
14641
...
...
这基本上是一个长度为 N
的数组,在每个索引处都有一个长度为 i+1
.
的数组
我们究竟如何设置它?
我尝试了一些使用指针的方法。
我设置了一个这样的指针数组:
int *arr[N];
然后我需要一个指针i
指向i+1
的数组,所以我做了:
int *i = 0;
for(int j = 0; j < N; j++){
int numArr[j+1];
arr[*i] = numArr;
*i++;
}
我的方向是否正确?因为我相信我应该为此分配内存,因为我以后必须使用 free()
。我会为每个数组初始化使用 malloc()
吗?
代码可以变得非常简单,如果你知道你在做什么:
int *arr = malloc(N * sizeof(int*));
int i;
for (i = 0; i < N; ++i) {
arr[i] = malloc(sizeof(int) * (i + 1));
}
当然,您需要进一步调用 free()
,如下所示:
for (i = 0; i < N; ++i) {
free(arr[i]);
}
free(arr);
我正在尝试创建一个动态数组。因此,例如,让我们看一下帕斯卡的三角形:
1
11
121
1331
14641
...
...
这基本上是一个长度为 N
的数组,在每个索引处都有一个长度为 i+1
.
我们究竟如何设置它?
我尝试了一些使用指针的方法。
我设置了一个这样的指针数组:
int *arr[N];
然后我需要一个指针i
指向i+1
的数组,所以我做了:
int *i = 0;
for(int j = 0; j < N; j++){
int numArr[j+1];
arr[*i] = numArr;
*i++;
}
我的方向是否正确?因为我相信我应该为此分配内存,因为我以后必须使用 free()
。我会为每个数组初始化使用 malloc()
吗?
代码可以变得非常简单,如果你知道你在做什么:
int *arr = malloc(N * sizeof(int*));
int i;
for (i = 0; i < N; ++i) {
arr[i] = malloc(sizeof(int) * (i + 1));
}
当然,您需要进一步调用 free()
,如下所示:
for (i = 0; i < N; ++i) {
free(arr[i]);
}
free(arr);