求解答一下一段C++代码

#include "stdafx.h"
#include<stdio.h>
main(int argc, char *argv[])
{
char *u = argv[1], *p = argv[2];
if(argc<3)
return 0;
int i;
for(i=1;i<argc;i++)
printf("%s\n",argv[i]);
printf("获取第1个参数是%s\n",u);
printf("获取第2个参数是%s\n",p);
return 0;
}

最不解的就是
if(argc<3)
return 0;
为什么要加这段程序才不会报错
求高手解释一些上面的代码

argc是一整数,它表示在(dos)命令行上的参数个数。具体的参数存放在argv[]字符串数组中。
如果命令行是progname str1 str2的形式,那么就算三个参数, argc是3,第一个参数argv[0]始终是可执行程序的文件全名。除此之外命令行上还有两个参数是传递给程序用的,它们放在arg[1],和arg[2]中,用你给的程序就可以取得它们。
如果argc<3, 就说明命令行给出的参数不到三个,就是徐了程序名之外,另外没有参数或只有一个参数 ,这时运行下面的程序段会有错(因为取不到“第一参数”,“第二参数”)所以return, 而不再执行取参数的操作,只有当argc不小于3才让它执行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-03
argc>=3 的时候才有 argv[1], argv[2].
否则就越界了.
第2个回答  2012-08-03
为什么? 你自己看看呢?
你把argv[1],[2]都给传过来了,如果没有这个判断就越界了。
argc只是确定输入是否大于3个 要不然后面访问的u,p都会访问出错
相似回答