-1

以下のコードは、ubuntuターミナルで./a.out abc abdを実行すると、ガベージ値を出力します。

#include<stdio.h>

int main(int size_of_args, char args[10][10])
{
    while(size_of_args)
        printf("%s\n",args[--size_of_args]);

    return 0;
}

ただし、以下のコードは正しく実行されます。説明してください。

#include<stdio.h>

int main(int size_of_args, char *args[])
{
    while(size_of_args)
        printf("%s\n",args[--size_of_args]);

    return 0;
}
4

1 に答える 1

4

char args[10][10]は 10x10 文字の配列であるため、whilechar *args[]は文字 (の配列) へのポインター (の配列) へのポインターです。後者は、パラメータが に渡される方法mainです。

合理的なコンパイラは、最初のケースで、 の署名が間違っていることを警告しますmain

于 2012-11-24T16:48:34.510 に答える