当我打印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
答案 0 :(得分:4)
您遇到了未定义的行为:您只能访问argv[0]
... argv[argc]
,其中最后一个条目是空指针。从它的外观来看,环境存储在argv
的数组之后,但根本没有保证。