当我打印 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/