It seems that the argv[argc] is always NULL, so I think we can traverse the argument list without argc. A single while lo
argv[argc]
NULL
argc
while
It's for historical reasons, and compatibility with old code. Originally, there was not a guarantee that there would exist a null pointer as the last element of the argv array. But argc has always existed.