c++ - 打印 20 个 ARGV[] 值得到此输出,请解释为什么?

标签 c++ c

当我打印 argv 值 20 次时,我得到如下所示的输出,这是为什么?请解释一下

int main(int argc,char **argv)
{
    int i;
    for(i=0;i<20;i++)
       printf("%s\n",argv[i]);
}

输出:

 ./a.out a

 a

 ./a.out

 a

 (null)

 SHELL=/bin/sh

 TERM=xterm-color

 USER=root

 SUDO_USER=hari

 SUDO_UID=501

 SSH_AUTH_SOCK=/tmp/launch-Jm4kQ0/Listeners

 __CF_USER_TEXT_ENCODING=0x0:0:0

 USERNAME=root

 PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Applications/gedit.app:/Users/hari/Downloads/gradle-1.9/bin:/usr/X11/bin
 PWD=/Users/hari/Desktop/Cerner/Pointer
 SHLVL=1
 SUDO_COMMAND=/usr/bin/su
 HOME=/var/root
 LOGNAME=root
 LC_CTYPE=UTF-8
 SUDO_GID=20
 DISPLAY=/tmp/launch-DMwOKd/:0

最佳答案

您遇到了未定义的行为:您只能访问 argv[0]...argv[argc],其中最后一个条目是空指针。从表面上看,环境存储在 argv 数组之后,但根本没有这样的保证。

关于c++ - 打印 20 个 ARGV[] 值得到此输出,请解释为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20747021/

相关文章:

c++ - 函数指针类型和值的部分类特化

c++ - 正则表达式错误。我的正则表达式有什么问题

c++ - 是否有任何 C++ 工具可以检测 static_cast、dynamic_cast 和 reinterpret_cast 的滥用?

c - 如何用 gcc 捕获未定义的预处理器宏?

编译 sqlite 合并以获取用户身份验证会引发错误 C2129 和 C1083

c - 如何在函数内传递结构变量

c++ - 怎么了?在四行代码中为相同的东西提供三种不同的类型?

c++ - 如何在 C++ 文件中的 #ifdef 中使用 Makefile 中的变量

c++ - VirtualLock 真的按照它说的做吗?

c - IF 条件未按预期工作 - C 语言