main函数参数的一点疑问
#include "stdio.h "
main(int i,int j)
{
printf( "i=%dj=%d ",i,j);
}
生成 a.exe
为什么在cmd 命令行下打 a.exe 1 2 为什么都不显示?
[解决办法]
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
{
int i;
if(argc <2)return 1;
else
{
for(i=1;i <argc;++i)
printf( "%d\n ",atoi(argv[i]));
}
return 0;
}
[解决办法]
在前面课程的学习中,对main()函数始终作为主调函数处理,也就是说,允许main()调用其它函数并传递参数。事实上,main()函数既可以是无参函数,也可以是有参的函数。对于有参的形式来说,就需要向其传递参数。但是其它任何函数均不能调用main()函数。当然也同样无法向main()函数传递,只能由程序之外传递而来。这个具体的问题怎样解决呢?
我们先看一下main()函数的带参的形式:
main(argc,argv)
int argc,char *argv[];
{
.....
}
从函数参数的形式上看,包含一个整型和一个指针数组。当一个C的源程序经过编译、链接后,会生成扩展名为.EXE的可执行文件,这是可以在操作系统下直接运行的文件,换句话说,就是由系统来启动运行的。对main()函数既然不能由其它函数调用和传递参数,就只能由系统在启动运行时传递参数了。
在操作系统环境下,一条完整的运行命令应包括两部分:命令与相应的参数。其格式为:
命令参数1参数2....参数n
此格式也称为命令行。命令行中的命令就是可执行文件的文件名,其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。
命令行与main()函数的参数存在如下的关系:
设命令行为:program str1 str2 str3 str4 str5
楼主可以自己baidu一下 :)
[解决办法]
main函数是编译器规定的一个函数,它的参数接口定义是规定好的,编程时要么使用规定的参数,要么不使用参数。
我们在编程时不能修改main的参数类型。
[解决办法]
argc和argv都是操作系统传给应用程序的。应用程序的C引导代码会从操作系统提供的进程控制块中找到命令行参数,然后计算出这些参数的个数,作为argc传递给main。