【发布时间】:2017-10-14 16:11:26
【问题描述】:
我已经实现了一个具有初始大小的动态数组,并在其中插入了一个包含两列的数组,例如{{"aa","bb"},{"cc","dd"},{"ff","gg"}} 这是我的代码。该元素看起来可以直接存储在数组中,但我不知道如何获取类似的元素ptr_arr[i][j].
typedef struct {
char **array;
size_t used;
size_t size;
} Array;
void initArray(Array *a, size_t initialSize) {
a->array = (char **)malloc(initialSize * sizeof(char *));
int i;
for (i = 0; i < 2; i++) {
a->array[i] = (char *) malloc(initialSize * sizeof(char *));
}
a->used = 0;
a->size = initialSize;
}
void insertArray(Array *a, char* (*element)[2]) {
if (a->used == a->size) {
a->size *= 2;
a->array = (char **)realloc(a->array, a->size * sizeof(char));
}
a->array[a->used++] = *(*element);
}
int main(int argc, const char * argv[]) {
Array ptr_arr;
initArray(&ptr_arr, 1);
char *b[] = {"85","9u"};
insertArray(&ptr_arr, &b);
printf("%s \n", (ptr_arr.array[0][1])); //this is just i want to use
return 0;
}
【问题讨论】:
-
a->array = (char **)malloc(initialSize * sizeof(char *));-->a->array = malloc(sizeof *(a->array) * 2); -
@chux 有什么问题?我没明白。
-
您的代码
malloc(initialSize * sizeof(char *))分配了 1 个指针。malloc(sizeof *(a->array) * 2);分配 2 个指针用于下面的for (i = 0; i < 2; i++) { -
@chux 没有任何改变,我仍然不能以这种方式使用它。
-
“不能以那种方式使用它”缺乏细节。请展开。
标签: c arrays string multidimensional-array char