十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
int main (int argc,char *argv[]) 或者 int main (int argc,char **argv)
专注于为中小企业提供成都网站制作、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业沧源免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
其中第一个表示参数的个数;第二个参数中argv[0]为自身运行目录路径和程序名,argv[1]指向第一个参数、argv[2]指向第二个参数……
测试例子:
#include stdio.h#include string.h
int main(int argc,char *argv[])
{
printf("argc= %d\n",argc);
while(argc--)
{
printf("%s \n",*argv++);
}
return 0;
}
你问出这个问题,说明你还不明白函数参数传递的本质。原则上说,函数的实参和形参是必须一致的,但某些时候,在源代码中,你的实参和形参可能会不一致,这种情况下,编译器会尝试进行隐性转换,如果转换不了,那么就会报错。你也可以进行强制转换,比如:int a(char* s, void* v);调用时,int* a, *b; a((char*)a, (void*)b);
这种强制转换在实际使用中非常常见。
函数的参数调用,其实是一个出栈和入栈的过程。如果你的形参和实参不一致:类型不一致或者个数不一致,你可以用强制手段完成调用,但往往传入函数的参数值,会发生错误,更严重的时候,会引发系统崩溃。
argc和argv是main函数的形式参数。这两个形式参数的类型是系统规定的。如果main函数要带参数,就是这两个类型的参数;否则main函数就没有参数。
坚持使用标准的意义在于:当你把程序从一个编译器移到另一个编译器时,照样能正常运行。
由于是 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函数参数理论上支持“无数”个,且参数在进程内支持修改。
1、第一新建一个project。
2、输入头文件#include。
3、输入主函数int main()。
4、接着输入函数主体部分,变量必须先定义类型再使用。
5、输入变量的值,注意这里scanf里变量名前必须加,结尾必须加分号。
6、输入函数主体部分并输出。
7、点击编译按钮,查看是否有error。
8、接着直接运行,如此便转换了。