似乎argv[argc]总是NULL,所以我认为我们可以在没有argc的情况下遍历参数列表.一个while循环就可以做到这一点.

如果argv的末尾总是有NULL,那我们为什么还要argc呢?

推荐答案

是的,保证argv[argc]==NULL英镑.见C11 5.1.2.2.1 Program startup(我的重点)

如果声明了它们,则主函数的参数应遵循 以下限制:

argc的值应为非负.

因此,提供argc并不重要,但仍然有用.除了其他功能之外,它还允许快速判断是否传递了正确数量的参数.

编辑:问题已修改为包括C++.N3337草案3.6.1 Main function

2.argc应为从中传递给程序的参数数

C++相关问答推荐

漏洞仅出现在FreeBSD上,但在Windows、Linux和MacOS上运行得非常好

malloc实现:判断正确的分配对齐

标准的C17标准是用括号将参数包装在函数声明中吗

为什么GCC可以调用未定义的函数?

测量ARM MCU中断延迟的问题

如何调试LD_PRELOAD库中的构造函数?

Ruby C Api处理异常

在C23中使用_GENERIC实现带有右值的IS_POINTER(P)?

初始变量重置后,char[]的赋值将消失

&;(str[i])和(&;str)[i]有什么区别?

无法在OpenGL上绘制三角形

不同出处的指针可以相等吗?

如何将C中的两个字符串与从文件接收的字符串中的字符数进行比较

将多项式从文件.txt加载到终端时出现问题

C-try 将整数和 struct 数组存储到二进制文件中

合并对 struct 数组进行排序

如何使用空元素块声明指针数组

有没有办法减少C语言中线程的堆大小?

将size_t分配给off_t会产生符号转换错误

返回指向函数内声明的复合文字的指针是否安全,还是应该使用 malloc?