main(int arc,char **arv)为什么是合法的?

来源:百度知道 编辑:UC知道 时间:2024/06/23 01:57:12
我知道main(int argv,char *arge[])是合法的, main(int arc,char **arv)为什么也是?char *arge[] 与char **arv作为形参时为什么是一样的?请详细解释下,谢谢。

数组作为形参,就弱化为指针

int f(int a[10]) 和 int f(int *a)完全等价

int f(int a[10])
{
int size = sizeof(a);/*这里得到的是指针的大小,而不是数组的大小*/
}

这个其实很简单,举个例子吧
void function(int, char*[]);
这个声明是合法的,形参的名字甚至都可以没有!
所以,可以看出形参是多么的不重要了吧!
重要的是函数名

最为参数时, 函数名就是一个指针, 指向数组第一个元素.
所以char *arge[] 就等于char **arv