c语言main()函数参数详解
写在前面
在一个C语言源文件里,不论代码有多少行,程序都是从main函数开始执行的。main函数也被称为程序的入口,有且仅有一个,即使有多个 .c 文件,也只能存在一个main函数。
main()
首先,我们来认识一下main函数的标准写法:
int main(){ |
相信大家曾经在书上见过另一种main函数的写法,如下:
void main(){ |
有何区别?主要区别在于函数是否有返回值,int表示函数有一个整型的返回值,void表示函数不需要返回值。虽然在某些编译器中void main可以编译通过,但在其他编译器中可能会报错,为了代码的可移植性,推荐使用int main()。
那么这种main函数呢?
int main(void){ |
这里的void表示main函数不需要参数,这个写法不算是错误的,是符合标准的,也可以什么都不写。
也许你会有这样的疑问,如果main函数有参数呢?很好!那什么情况下会用到这些参数呢?我们都知道程序需要交互,这些main函数里的参数就能让我们在程序启动的时候给程序传参
int main(int argc, char* argv[]){ |
argc: argument count,是命令行参数的数量,包括程序本身的名称。因此,argc的值至少是1,并且argc不用用户输入,程序会自己计算值是多少。
argv: argument vector,是指向字符串数组的指针,其中每个元素是一个指向 传递给程序的参数的 指针。这些参数是通过命令行传递给程序的。
举个例子
int main(int argc, char* argv[]) { |
显然,argv[0]就是指向程序名称的字符串指针。
再举个例子,这次我们多输入几个参数值
int main(int argc, char* argv[]) { |
可以看到,我们在命令行中执行程序时给了两个参数string1和string2,于是程序输出结果是参数有3个:程序本身的名称、string1j和string2。
argv[1]是指向string1的字符串指针,argv[2]是指向string2的字符串指针。
小结
一般情况下,推荐使用int main(),如果需要给main函数参数,就写成int main(int argc, char* argv[])
下次再见~