打印20个ARGV值[]我得到这个输出请解释原因?

时间:2013-12-23 16:03:35

标签: 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

1 个答案:

答案 0 :(得分:4)

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