タイトルが100%正しくない場合は、私を許してください。私は、文字列へのポインタと配列へのポインタへのポインタ(?)の2つの入力を受け取る関数を持っています。 (文字列配列がchar *inp
ある) 配列へのポインタへのポインタ
int string_parser(char *inp, char **array_of_words[])
で、関数は、文字列配列に
- に言葉の量を返す必要がありますポインターの配列へのポインター
char **array_of_words[]
- 各単語の最初の文字のアドレスを指している配列の各要素(私はそれが単語であれば謝罪します)
私はポインターの配列へのポインターを作成し、この配列
char **startOfWords_ptr = (char **) malloc(amountOfWords * sizeof(char*));
内容をうまく操作しています。ポインタはポインタの配列の先頭アドレスを指すように:私は言っているが、私は*array_of_words = *(startOfWords_ptr);
でそれを
を行う方法を理解していない - 私はすぐに戻ってarray_of_words
に*start_of_words
で配列を渡したいですか?
確かに私はいない印刷するとき、私は出力としてコメントを...
printf("%p\n", (void *) *array_of_words); // 0x401f2c, o
printf("%p\n", (void *) *startOfWords_ptr); // 0x401f2c, o
printf("%p\n", (void *) array_of_words[1]); // 0x401f2c, o
printf("%p\n", (void *) startOfWords_ptr[1]); // 0x401f30, t
提案を同じ値を得ることはありませんので、
*array_of_words = (startOfWords_ptr); // This currently does not work
printf("%p, %c\n", (void *) array_of_words[0], *array_of_words[0]); // 0xcbbdd0, ;
printf("%p, %c\n", (void *) startOfWords_ptr[0], *startOfWords_ptr[0]); // 0x401f3b, o
printf("%p, %c\n", (void *) array_of_words[1], *array_of_words[1]); // 0x401f2c, o
printf("%p, %c\n", (void *) startOfWords_ptr[1], *startOfWords_ptr[1]); // 0x401f3f, t
C++では、通常、 'std :: string'と' std :: vector'を使用し、生の配列とメモリの割り当てを避けます。そうではありません。言語の*自然*構造を使用するときと同じではありません。 – crashmstr
C++タグが削除されました – fOrceez
インデックスは0から始まりますが、それだけではありません。 –