函数定义中括号中的值

时间:2016-03-09 19:46:17

标签: c

我以前见过人们在C之前做过这样的事情 -

int main (int argc, char *argv[argc+1])
{
    /* ... */
}

argc+1有什么意义?它是什么意思?它有助于防止无效指针或什么?

1 个答案:

答案 0 :(得分:1)

一方面,这不允许在#34; classic" C(C89 / 90),因为数组大小表达式不是常数。它在C99中变得合法。

另一方面,即使在C99中,函数参数声明中的顶级数组大小仍然被忽略,声明等同于

int main (int argc, char **argv) 

因此,argc+1存在的唯一原因是作为自我记录功能:它告诉读者argv指针指向具有{{1的数组的开头有效的元素。