这是代码,它按预期运行。
` #include <stdio.h> `
int main( int argc, char* argv[])
{
printf (" this is the contents of argc:%d\n",argc);
int i;
for (i = 0; i < argc ; i++){
printf(" argv = %d = %s\n",i,argv[i]);
}
return 0;
}``
当我将 for 循环中的 argc 更改为数字时,比如说 10,我仍然小于 10,代码崩溃了。
~/Desktop$ ./argc one two three
this is the contents of argc:4
argv = 0 = ./argc
argv = 1 = one
argv = 2 = two
argv = 3 = three
argv = 4 = (null)
argv = 5 = SHELL=/bin/bash
argv = 6 = SESSION_MANAGER=local/wajih:@/tmp/.ICE-unix/1230,unix/wajih:/tmp/.ICE-unix/1230
argv = 7 = QT_ACCESSIBILITY=1
argv = 8 = COLORTERM=truecolor
argv = 9 = XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
如果我将 for 循环中的 argc 更改为 100;这是一条很长的错误信息的结尾
argv = 54 = GDMSESSION=ubuntu
argv = 55 = DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
argv = 56 = LC_NUMERIC=ar_AE.UTF-8
argv = 57 = _=./argc
argv = 58 = OLDPWD=/home/wajih
argv = 59 = (null)
Segmentation fault (core dumped).`your text`
我想了解发生这种情况的原因,谢谢
我是 c 和一般编程的新手,我一直在搞乱了解 argc 和 argv 的概念。