C语言 对main函数的调用与操作

我们都知道,使用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;
}

结构如下:

感谢各位看官!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fitz&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值