内存角度来看,函数的参数是要入栈的,栈区大小决定了参数的个数。一般C语言程序运行时默认1M的栈空间,以int类型的参数来看,1M=1024KB=1024*1024字节,32位系统中int类型占4个字节,所以理论上一个函数最多有262144个int类型的参数。实际中要远远小于这个数,因为应用程序中的局部变量都需要占用栈空间。
创新互联是一家专业提供勐海企业网站建设,专注与成都网站建设、做网站、H5高端网站建设、小程序制作等业务。10年已为勐海众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数。
C语言规定main函数的参数只能有两个,还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:
int main (int argc,char *argv[])
由于main函数不能被其它函数调用,因此不可能在程序内部取得实际值。那么,在何处把实参值赋予main函数的形参呢? 实际上,main函数的参数值是从操作系统命令行上获得的。当我们要运行一个可执行文件时,在DOS提示符下键入文件名,再输入实际参数即可把这些实参传送到main的形参中去。
DOS提示符下命令行的一般形式为:
C:\可执行文件名 参数 参数……
可以有任意多个,但是常用的是前三个:
第一个是一个整数,表示了传入的参数数量(包含程序路径本身在内)
第二个是一个字符指针数组,保存了传入的各个参数(包含程序路径本身在内,以字符串形式保存)
第三个是一个字符指针数组,保存了当前操作系统中的环境变量。
根据需要确定,一般情况下,最多有3个:
int
main(int
argc,char
*argv[],char
*envs[])
int
main(
int
argc,
char
*argv[],
char
*envp[]
)
三个参数:
argc表示有多少个命令行参数,第一个就是执行程序名,所以argc最少为1。
argv是具体的参数。
envp是系统的环境变量,很少有介绍的。“名称=值”的形式,以NULL结束。
可以测试一下:
int
main(
int
argc,
char
*argv[],
char
*envp[]
)
{
for
(
int
i
=
0;
i
argc;
++i
)
{
printf(
"%d
:
%s
\n",
i,
argv[
i
]
);
}
for(
int
i
=
0;
envp[i]
!=
NULL;
++i
)
{
printf(
"%d
:
%s
\n",
i,
envp[
i
]
);
}
return
0;
}