1

これは非常に愚かで愚かに聞こえるかもしれません。私はとの違いを理解するのに疲れています

char *token[32];

char token[32];

char token [32]は、トークンが32文字を含むことができる文字配列であることを宣言します。

char * token [32]の場合、tokenは32文字のポインターを保持します。これらのポインターは何を指しますか?または、より具体的には、ポインタが指すメモリを割り当てるのはユーザーの責任です。

4

2 に答える 2

7

char *token[32]トークンを、32文字を含むことができる文字配列へのポインターとして宣言します。

いいえtoken。32文字のポインタの配列であると宣言しています。つまり、最初のケースでtokenは32文字を保持し、2番目のケースでは32個のポインターを保持します。

32文字を保持する文字配列へのポインタを宣言する場合は、次のように記述します。

char arr[32];
char (*token)[32] = &arr;
于 2012-12-20T22:31:21.750 に答える
4
char *token[32];

32文字のポインタの配列です。つまり、アレイは次のように使用できます。

token[0]=p1;
token[1]=p2;
.....

ここで、p1とp2はchar[]またはchar*タイプにすることができます。

この投稿は、質問以外の関連事項を理解するのに役立つ場合があります。

配列へのCポインター/ポインターの配列の曖昧性解消

于 2012-12-20T22:31:22.483 に答える