C语言里的主调函数
在 A 函数里面调用了 B 函数,那么 A 函数就是【主调函数】,B 函数式【被调函数】。【主调函数】其实是一个【相对的概念】,它是相对于【被掉函数】来说的。在 C 语言里面,main 函数程序的入口,也就是说程序运行起来,main 函数是第一被调用的函数。接下来,不论你要调用任何其他函数,都必须在 main 函数里面调用,这时候 main 函数就是【主调函数】。也即是说,main 函数一般作为主调函数的。反过来,主调函数不一定就只有 main 函数,其他函数只要在内部调用了任何函数,那么它也是主调函数了。
函数的参数
函数的参数分为形参和实参两种。形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。函数的形参和实参具有以下特点:
1. 形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
2. 实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使实参获得确定值。
3. 实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。4. 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
ARGc和ARGv中的ARG指的是"参数"(外语:ARGuments,argument counter 和 argument vector ) [1]
至少有两个参数至主函数:ARGc和ARGv;
首先是一个至算提供的参数到程序,
第二个是对字符串数组的指针。[1]
argc,argv 用命令行编译程序时有用。
主函数main中变量(int argc,char *argv[ ])的含义
有些编译器允许将main()的返回类型声明为void,这已不再是合法的C++
main(int argc, char *argv[ ],char **env)才是UNIX和Linux中的标准写法。
argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数
* argv[ ]: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数
argv[0] 指向程序运行的全路径名
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符
argv[argc]为NULL。
**env:字符串数组。env[ ]的每一个元素都包含ENVVAR=value形式的字符
串。其中ENVVAR为环境变量,value 为ENVVAR的对应值。
argc, argv,env是在main( )函数之前被赋值的,编译器生成的可执行文件,main( )不是真正的入口点,而是一个标准的函数,这个函数名与具体的操作系统有关。
#include<stdio.h>
intmain(intargc,char*argv[])
{if(argc==1||argc>2)
printf("请输入:fillname");
if(argc==2)
printf("编辑%s\n",argv[1]);
return0;}
编译该程序:gcc -o edit edit.c
运行:〉edit
结果:请输入想要编辑的文件名如:fillname
运行:〉edit f1.txt
结果:编辑 f1.txt
执行edit时,argc为1,argv[0]指向edit
而执行edit f1.txt时,argc的值为2,argv[0]指向edit,argv[1]指向f1.txt