扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
argc和argv是main函数的形式参数。这两个形式参数的类型是系统规定的。如果main函数要带参数,就是这两个类型的参数;否则main函数就没有参数。
创新互联是一家专业提供东港企业网站建设,专注与成都网站制作、成都网站建设、外贸营销网站建设、H5响应式网站、小程序制作等业务。10年已为东港众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
坚持使用标准的意义在于:当你把程序从一个编译器移到另一个编译器时,照样能正常运行。
由于是 int main( ..) 那么当时 应当返回 int 但是return 2.3 ;也能运行正确,这是因为编译器自动转换2.3为int,截断后为return 2;
如果写为 return "abc";那么会报错, error C2440: “return”: 无法从“const char [4]”转换为“int”。
变量名称argc和argv是常规的名称,当然也可以换成其他名称。那么,实际参数是如何传递给main函数的argc和argv的呢?我们知道,C程序在编译和链接后,都生成一个可执行文件。也可以在命令行下带参数执行,命令行执行的形式为:可执行文件名称 参数1 参数2 ... ... 参数n。可执行文件名称和参数、参数之间均使用空格隔开。
如果按照这种方法执行,命令行字符串将作为实际参数传递给main函数。具体为:
(1) 可执行文件名称和所有参数的个数之和传递给argc;
(2) 可执行文件名称(包括路径名称)作为一个字符串,首地址被赋给argv[0],参数1也作为一个字符串,首地址被赋给argv[1],... ...依次类推。
字符串arav[i](i=1,...argc-1)表式第 i 个程序参数,标准C 要求argv[argc]是个null指针,但在有些旧时编译器中却不是这样的,argv向量以及它所指向的字符串必须是可以修改的,并且他们的值在程序执行期间不能被编译器或操作系统所修改。如果编译器并不允许大小写混合的字符串 ,则存储在argv中的字符串必须采用小写形式。
1.给main函数传递参数只有一种方式,即main(int argc, char *argv[])。第一个参数必须int,第二个(如果有的话)必须是char**或char *argv[]。
2.argc代表传入参数的个数,argv是一个数组,每个元素都是一个char *。字符串arav[i](i=1,...argc-1)表式第 i 个程序参数,标准C 要求argv[argc]是个null指针。
3.main函数参数理论上支持“无数”个,且参数在进程内支持修改。
在调用可执行程序时,可以通过main函数的参数将命令行的调用参数传递给main函数。
一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。
具体形式如下:
main(){ }
被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。
在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。
扩展资料:
程序执行总是从main函数开始,如果有有其他函数,则完成对其他函数的调用后再返回到主函数,最后由main函数结束整个程序。在执行程序时,由系统调用main函数。
main 函数是在程序启动中完成对具有静态存储期的非局部对象的初始化之后被调用的。它是程序在有宿主 (hosted)环境(亦即有操作系统)中所指定的入口点。自立程序(启动加载器,操作系统内核,等等)的入口点则是由实现定义的。
参考资料来源:百度百科-C语言函数
在调用可执行程序时,可以通过main函数的参数将命令行的调用参数传递给main函数。
事实上,main()函数既可以是无参函数,也可以是有参的函数。对于有参的形式来说,就需要向其传递参数。
从函数参数的形式上看,包含一个整型和一个指向字符指针的指针。当一个C的源程序经过编译、链接后,会生成扩展名为.EXE的可执行文件(对windows操作系统而言),这是可以在操作系统下直接运行的文件,换句话说,就是由系统来启动运行的。由系统在启动运行时传递参数。
在操作系统环境下,一条完整的运行命令应包括两部分:命令与相应的参数。其格式为:
命令参数1参数2....参数nt;
此格式也称为命令行。命令行中的命令就是可执行文件的文件名,其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。
命令行与main()函数的参数存在如下的关系:
设命令行为:program str1 str2 str3 str4 str5
扩展资料:
main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统)。
如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入return 0; ,表示程序正常退出。不过,我还是建议你最好在main函数的最后加上return 语句,虽然没有这个必要,但这是一个好的习惯。
也就是说在最新的C语言标准中强制要求main函数的返回值类型为int,main函数的返回值是传递给操作系统,让操作系统判断程序的执行情况(是正常结束还是出现异常)。
参考资料来源:百度百科-main函数
程序名 abc.exe ,带位置参数 3个 或2个 或1个 ...
abc.exe 987 65 4
abc.exe 987 65
abc.exe 987
void main(int arg ,char *arv[]){}
int型参数,通过字符传递,
char prog_name[60];
int x1,x2,x3;
strcpy(prog_name,arv[0]); // 程序名在 arv[0]
if (arg =2) sscanf(arv[1],"%d",x1); // 传递一个int型
if (arg =3) sscanf(arv[2],"%d",x2); // 传递一个int型
if (arg =4) sscanf(arv[3],"%d",x3); // 传递一个int型
-------------
浮点计算机参数 用 if (arg =i) sscanf(arv[i-1],"%f",fi); 从字符串里读出来。
所谓命令行参数就是这样,假设你编译出来的可执行文件为a.exe,然后你输入指令调用程序的命令是: a b c这样时,程序会将输入的指令变成3个字符串,分别是"a","b",和"c",并且通知你可用的字符串个数。
#includestdio.h
#includestring.h
struct mmm { int num; char name[40]; } me;
void main(int argc,char* argv[]) { int b=0;
me.num=100001; strcpy(me.name,"小明");
if ( argc1 ) {
b=1;
if ( strcmp(argv[1],"-xuehao")==0 ) printf("学号:%d\n",me.num);
else if ( strcmp(argv[1],"-name")==0 ) printf("姓名:%s\n",me.name);
else b=0;
}
if ( b==0 ) printf("命令行未包含有效参数。\n");
}
argc---是带入参数的个数,argv[]是中每个数组元素代表每个带入的字符串参数,如执行文件名为“hello”,如果执行 hello a,
int main(int argc,char *argv[])
{
printf("argc:%d\n",argc);
printf("argv[0]:%s\n",argv[0]);
printf("argc[1]:%s\n",argv[1]);
return 0;
}
结果:
argc:2
argv[0]:./hello
argv[1]:a
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流