参见英文答案 >
Why do we need argc while there is always a null at the end of argv?4个
我一直认为argc需要标记argv的结尾,但我刚刚通过定义了解到argv [argc] == NULL.我认为argc是完全冗余的吗?如果是这样,我一直认为C以效率的名义以冗余的方式取消了.我的假设是错误的还是有背后的历史原因?如果原因是历史性的,你能详细说明一下吗?
我一直认为argc需要标记argv的结尾,但我刚刚通过定义了解到argv [argc] == NULL.我认为argc是完全冗余的吗?如果是这样,我一直认为C以效率的名义以冗余的方式取消了.我的假设是错误的还是有背后的历史原因?如果原因是历史性的,你能详细说明一下吗?
解决方法
历史.
哈比森&钢铁(第5版,9.9“主程序”)说如下:
Standard C requires that
argv[argc]
be a null pointer,but it is not so in some older implementations.