argv[argc]==?

argv[argc]==?,c,argv,C,Argv,我的教授和几个学生正在争论argv是否以null结尾。我的朋友写了一个小程序,它输出了null,但另一个孩子说他可能只是在读空白内存。有人能解决这个问题吗?根据标准,“argv[argc]应该是空指针”(5.1.2.2.1)。来自标准: 5.1.2.2.1程序启动 … --argv[argc]应为空指针 所以,是的;argv以null结尾为什么以及如何成为标准?有什么想法吗?@Reigel:1979年()的exec手册页显示,这比标准早了很多,并且包含了一个可能的提示,说明为什么会这样:“Arg

我的教授和几个学生正在争论
argv
是否以null结尾。我的朋友写了一个小程序,它输出了
null
,但另一个孩子说他可能只是在读空白内存。有人能解决这个问题吗?

根据标准,“argv[argc]应该是空指针”(5.1.2.2.1)。

来自标准:

5.1.2.2.1程序启动

--argv[argc]应为空指针


所以,是的;argv以null结尾

为什么以及如何成为标准?有什么想法吗?@Reigel:1979年()的
exec
手册页显示,这比标准早了很多,并且包含了一个可能的提示,说明为什么会这样:“Argv可以直接在另一个execv中使用,因为Argv[argc]是0。”哇,我不知道。那为什么是argc?我不知道为什么。但是它避免了仅仅为了计算参数而遍历
argv
数组,从而使编写一些程序变得更加容易。。原因:argc:
if(argc@Jack:
argv
是一个指针;
argv[0]
也是一个指针。很可能
sizeof(argv)/sizeof(argv[0])
的计算结果是
1
。无论如何,你的想法和我说的类似(不必走到
argv
数组)。不过,操作系统(对于Linux,ELF加载程序)必须遍历argv,因为它只在execve()中传递argv。