我读了一篇文章(忘了URL),里面说的argv[argc]是一个NULL指针(包含\0).要检查是否真的我写了这段代码,是的,它存在.我不明白的是,为什么操作系统包含此NULL指针argv[argc].它对其他东西也有用吗?
int
main (int argc, char **argv){
while (*argv)
printf ("%s\n", *argv++);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
rub*_*nvb 10
C标准5.1.2.2.1/2第二标记明确说明
argv [argc]应为空指针.
C++标准3.6.1/2也明确说明了
argv [argc]的值应为0.
标准(C99 5.1.2.2.1p2)规定:
如果声明它们,main函数的参数应遵循以下约束:
- argc的值应为非负值.
- argv [argc]应为空指针.
...
其基本原理是在通用实践的基础上为参数列表的末尾提供冗余检查(参考:ANSI C编程语言的基本原理(1990),2.1.2.2).
| 归档时间: |
|
| 查看次数: |
2142 次 |
| 最近记录: |