我以前见过人们在C之前做过这样的事情 -
int main (int argc, char *argv[argc+1])
{
/* ... */
}
argc+1
有什么意义?它是什么意思?它有助于防止无效指针或什么?
答案 0 :(得分:1)
一方面,这不允许在#34; classic" C(C89 / 90),因为数组大小表达式不是常数。它在C99中变得合法。
另一方面,即使在C99中,函数参数声明中的顶级数组大小仍然被忽略,声明等同于
int main (int argc, char **argv)
因此,argc+1
存在的唯一原因是作为自我记录功能:它告诉读者argv
指针指向具有{{1的数组的开头有效的元素。