请教C语言高手!!!

来源:百度知道 编辑:UC知道 时间:2024/05/15 03:25:18
如果有个主函数为如下
main(int argc,*argv[])
我想请问下,它在下面的程序中有用到argc,但是它并没有初始化此变量啊?
它的值是怎么来的啊,比如它会判定if(argc==1)do.....或者if(argc==2)do.....等等,再就是指针*argv[]可以表示几个参数啊?比如它再其后的程序中有用到argv[1],argv[2]等等...
请教高手解答,谢谢!!!

由于main函数不能被其他函数调用,因此不可能在程序内部取得实际值.实际上,main函数的参数值是从操作系统命令上获得的.当运行一个可执行文件时,在DOS提示符下输入文件名,再输入实参即可把这些实参传送到main函数的形参中去.

main函数的两个形参和命令行中的参数在位置上不是一一对应的.因为main函数的形参只有两个,而命令行中的参数个数原则上未加限制.argc参数表示了命令行中参数的个数(注意文件名也算一个参数),argc的值是在输入命令行时由系统按实际参数的个数自动赋值的.

例如,有命令行为:
c:\>test java vb vc
上面的test是代码编译后生成的可执行文件名(把.exe扩展名去掉了)
由于文件名test本身也算一个参数,所以共有四个参数(即test java vb vc),因此argc取得的值为4.
argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址.指针数组的长度既为参数个数.数组元素的初值由系统自动赋予.

例子:
#include<stdio.h>
void main(int argc,char *argv[])
{
while(argc-->1)
printf("%s\n",*(++argv));
}
把这个编译成可执行文件(文件名为test.exe).
打开命令提示符.
找到这个文件(在debug文件里面)
输入如下命令:
(假如路径是c盘)c:\>test java vb vc
结果显示
java
vb
vc