我们都知道,使用C语言时,main函数是必不可少的,而且有且仅有一个,我们可以通过main函数来调用其他函数例如:int 类型、double类型、void类型 等等……其实main函数自身就是一个函数,也是可以被调用的,只是我们在编译器使用的时候main函数是作为一个主函数,里面的参数实际上都是实参,并没有以形参的形式被调用。对此,我们怎么去调用main函数呢?一起来看看吧!
1.main()函数有关知识
main函数其实是有参数的:
int main(int argc , char* argv[],char* envp[])
(1):argc是一个整形变量,表示指向行参数的个数,其第一个参数是 文件名.exe
(2):第二个argv是表示字符指针的数组,每一个元素都是一个字符串
(3):第三个envp是表示字符指针的数组,每一个元素指向一个环境变量即字符串的指针
(1)main函数是程序执行的入口。
(2)main函数可以有返回值,也可以无返回值。
(3)main函数可以带参数,也可以不带参数。
写法
void main();
int main();
int main(int argc,char* argv[]);
示例:
//其中n 表示的是字符指针数组 arr 的元素个数,其最小值为1
//arr:字符串数组,这个数组每一个元素都是一个字符串(如:"China")
//arr[0]是表示完整的路径,是系统传入的参数,不可以更改(系统固定好的,非用户输入)
//arr[1],arr[2]……这些都是用户自己输入的参数,是字符串
这个代码的名字是:test.c
#include<stdio.h>
#include<Windows.h>
int main(int n, char* arr[])
{
int i = 0;
printf("参数的个数:%d\n", n);
for (; i < n; i++)
{
printf("输入的参数%d", i);
puts(arr[i]);
}
system("pause");
return 0;
}
在编译器运行结果:
这个结果是默认结果,用户没有输入任何参数,所以参数的默认值是1(其实就是表示完整的路径系统给的参数)
操作须知:这个main函数必须先在编译器运行(这个程序是必须可以运行的!),然后才可以生成exe文件.然后在这个main函数所在的文件夹取出test.exe文件复制到你想要的文件路径里面去。我的test.exe文件的完整径:"F:\.vs\test.c.exe"
注意事项:通过路径执行文件之前必须先在编译器里运行,生成exe文件!
说明:通过外部指令使用main函数的时候,不需要代码,只需要有exe文件就可以
2.用户输入参数的方法
上面我们知道,如果直接运行代码,结果是默认的,用户也无法输入参数。所以我们可以从外部通过其路径("F:\.vs\test.c.exe" )找到test.exe文件然后去运行,从而输入参数
(1)点击系统“开始”菜单,直接输入搜索"cmd"
如图所示:
(2)如果你的路径在F盘("F:\.vs\test.c.exe" ),输入 F: (大小写都可以) 然后回车再次输入 cd f:\.vs 再次回车,最后输入 test.c 此时文件所在的目录既是当前的目录,此时用户可以输入参数了。
结果如下:
3.以下给两个示例
(1)自行输入字符串数组,然后进行冒泡排序
代码:
#include<stdio.h>
#include<string.h>
int main(int n,char *arr[])
{
int i, j;
for (i = 1; i < n; i++)
{
char a[1000];
for (j = 1; j < n-i; j++)
{
if (strcmp(arr[j], arr[j + 1]) > 0)//调用strcmp函数,进行字符串比较
{
strcpy(a, arr[j]);
strcpy(arr[j], arr[j + 1]);//调用strcpy函数,实现字符串交换
strcpy(arr[j + 1], a);
}
}
}
for (int x = 1; x < n ; x++)
printf("%s \n", arr[x]);
return 0;
}
结果如下:
(2)使用main函数调用自定义函数
代码
#include<stdio.h>
void string(char *string)
{
puts(string);
}
int main(int n, char* arr[])
{
for (int i = 1; i < n; i++)
string(arr[i]);
return 0;
}
结构如下: