下面代码中的argv[--argc],为什么是[--argc]而不是[argc]呢?

2025-02-25 03:14:39
推荐回答(3个)
回答1:

argc表示数组argv中字符串的个数,因为数组是从0索引开始的,最后一个元素就是argc-1,如果用argc来做数组索引的话,就会引起数组超界,这在编译时是看不出来的,因为c语言不主动检查数组边界,只有在运行时才会出现问题,导致程序崩溃

回答2:

定义主函数
int main(int argc, int **argv)
这样的形式的时候
argv不可能等于NULL
至少有一个运行的程序名。
至于最后一个argv为NULL ,只是部分平台有这个功能
有些是没有的
大多数情况下, 还是要用argc来判断个数。

除此外, 很多程序, 会根据参数的个数实现不同功能, 直接用argc来判断, 比循环遍历argv确定参数总个数要方便的多。

回答3:

数组是从0开始计数的啊
就好像我定义了数组int a[5];那么可以输出a[5]么,当然不可以,最大也就是a[4]而已啊

还有argc!='\0'这个太诡异的吧,虽然也不能说错,但是感觉太别扭了吧