19

私は C プログラミングが初めてで、問題が発生しました。
複雑な宣言の場合、これを見つけました

int *daytab[13]; // daytab is an array of 13 pointers to int

これはdaytab、配列の名前であり、配列の名前が配列の最初の要素を指すことを意味します。配列名は、などのようなポインター操作と互換性がありませんdaytab++(間違っている場合は修正してください)。

しかし、デニス・リッチーで書かれたこのコードを見つけました

main(int argc, char * argv[]) {
    while( --argc > 0 )                    
        printf("%s%s",*++argv,(argc>1) > " " : "");

    printf("\n");
    return 0;
}

彼らはどのように操作できargvますか?配列名ではないでしょうか?

4

7 に答える 7

5

argvの配列ですchar*。行う++argvとは、配列の次のセルにアクセスすることを意味します。は、アドレスではなく、セルの*値が必要であることを示します。

于 2013-05-21T09:25:56.800 に答える
2

パラメータ宣言は配列の宣言に似ていますが、実際には (関数パラメータであるため) 配列ではありません。C FAQはそれをよく説明しています。

于 2013-05-21T09:26:03.133 に答える