1

問題はこれです。配列表記を使用して argv を作成できるようにしたい:

 char myargv[10][30];

ただし、メイン関数は、論理的に同じように扱うことができるにもかかわらず、**char を期待します。例:

int main(int argc, char **argv)
{
    printf("%s\n",argv[0]);
    return 0;
}

ただし、コード内で次のことを試してもうまくいきません:

char myargv[10][30];
char **pargv = myargv;

誰かが明確にすることができますか?pargv = myargv[0][0] などの他の順列も試しましたが、成功しませんでした。

編集:これが不可能であることが判明した場合、私が概説した方法で誰かが char **myargv を malloc 呼び出しを使用して初期化して、40 文字の 10 個の文字列を持つようにすることができます。構文を正しくするのに苦労しています。

4

4 に答える 4

0

myargvはポインターではなく配列であるため、機能しません。また、左辺値から右辺値への変換は割り当てには適用されません。

于 2013-10-02T18:10:47.447 に答える
0
char myargv[10][30];
char **pargv1 = myargv;  // Error, in an expression array is converted to pointer
char (*pargv2)[30] = myargv; // OK, pointer to an array 30 of char

pargv1へのポインタへのポインタcharです。

myargvの配列の配列ですchar30評価されると、 の配列へのポインタに変換されますchar

于 2013-10-02T18:05:45.787 に答える