下面的代码在我通过./a.out abc abd
在ubuntu终端中运行时打印垃圾值#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;
}
答案 0 :(得分:4)
因为char args[10][10]
是一个10x10字符的数组,而char *args[]
是指向(数组)字符的指针(数组)的指针。后者是参数传递给main
的方式。
合理的编译器会在第一种情况下警告您main
的签名错误。