私は最初のサイズを持つ動的配列を実装し、{{"aa","bb"},{"cc","dd"},{"ff","gg"}}
のような2つの列の配列をここに挿入します。私のcode.the要素は、coorectly配列に格納するように見えますが、 ptr_arr[i][j]
のような要素を取得します。配列内の配列のようなchar要素を取得
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->アレイ=(文字**)はmalloc(INITIALSIZE *はsizeof(チャー*))など;' - > 'A->アレイ=のmalloc(sizeof演算子*(A - >配列)* 2); ' – chux
@chux何が問題なのですか?私はそれを得ていませんでした。 –
あなたのコード 'malloc(initialSize * sizeof(char *))'は、1つのポインタを割り当てます。 'malloc(sizeof *(a-> array)* 2);'以下の 'for(i = 0; i <2; i ++)で使用するために2つのポインタを割り当てます{ – chux