C语言为什么要有 main 函数

C语言为什么要有 main 函数,第1张

它是整个程序的入口地址,程序从main函数开始并结束于main函数的最后一行代码。其实从哪儿开始都一样,但你总得给个标志吧,不然想从哪儿开始就从哪儿开始,计算机怎么运行?至于用main命名是约定速成,编译器这么说的就算了。。。

#include <stdioh>

void Input(float score[ ],int n)

{

int i ;

for (i = 0; i < n; i ++) {

printf("请输入第%d个裁判的分数:",i + 1);

scanf("%f",&score[i]);

}

}

float Cal_ave(float score[],int n,float max,float min)

{

float average = 00, sum = 00;

int i;

max = min = score[0];

for (i = 0; i < n; i ++) {

if (max < score[i]) {

max = score[i];

}

if (min > score[i]) {

min = score[i];

}

sum += score[i];

}

sum = sum - max - min;

average = sum / (n - 2);

return average;

}

int main(void)

{

float score[10];

float max, min, last;

Input(score, 10);

last = Cal_ave(score, 10, &max, &min);

printf("最高得分为:%2f最低得分为:%2f最终分为:%2f",max, min, last);

return 0;

}

这段程序编译成功应该是没问题

你玩过游戏吗?我指的是某些游戏,它可以使用秘籍,但是这种秘籍不是在游戏中按下特殊的键来开启的,而是把游戏的快捷方式更改之后实现的,可以在快捷方式的应用程序,比如exe后加上一个或多个参数(-maxmoney),类似这样的。

同样,main中的参数指的就是在运行程序时,后面加上的参数,你在vc中直接运行是不带参数的。

你可以用两个方法来加上参数,一个是在菜单工具里有个编译选项,你可以进去设置debug时需要加上的一个或多个参数;另一个是找到该exe文件,然后进入命令行窗口,输入exe文件的路径,然后加上空格和后面你想输入的任何参数,就行了。

可以在多说一句,arg是你这个程序有几个参数,argv是参数的字符串数组。

C程序最大的特点就是所有的程序都是用函数来装配的。main()称之为主函数,是所有程

序运行的入口。其余函数分为有参或无参两种,均由main()函数或其它一般函数调用,若调用

的是有参函数,则参数在调用时传递。

main()

{

y1=f1(x1,x2);

}

f1(int a,int b)

{

Y2=f2(x3,x4);

}

f2(int m,int n)

{

}

在前面课程的学习中,对main()函数始终作为主调函数处理,也就是说,允许main()调用

其它函数并传递参数。事实上,main()函数既可以是无参函数,也可以是有参的函数。对于有

参的形式来说,就需要向其传递参数。但是其它任何函数均不能调用main()函数。当然也同样

无法向main()函数传递,只能由程序之外传递而来。这个具体的问题怎样解决呢?

我们先看一下main()函数的带参的形式:

main(argc,argv)

int argc,char argv[];

{

}

从函数参数的形式上看,包含一个整型和一个指针数组。当一个C的源程序经过编译、链接后,会生成扩展名为EXE的可执行文件,这是可以在 *** 作系统下直接运行的文件,换句话说,就是由系统来启动运行的。对main()函数既然不能由其它函数调用和传递参数,就只能由

系统在启动运行时传递参数了。

在 *** 作系统环境下,一条完整的运行命令应包括两部分:命令与相应的参数。其格式为:

命令参数1参数2参数n¿

此格式也称为命令行。命令行中的命令就是可执行文件的文件名,其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。

命令行与main()函数的参数存在如下的关系:

设命令行为:program str1 str2 str3 str4 str5

其中program为文件名,也就是一个由programc经编译、链接后生成的可执行文件programexe,其后各跟5个参数。对main()函数来说,它的参数argc记录了命令行中命令与参数的个数,共6个,指针数组的大小由参数argc的值决定,即为charargv[6],指针数组的取值情况如图6-15所示。

数组的各指针分别指向一个字符串。应当引起注意的是接收到的指针数组的各指针是从命令行的开始接收的,首先接收到的是命令,其后

才是参数。

下面用实例来说明带参数的main()函数的正确使用。

[例6-29] 利用图形库函数绘制一个变化的环。它是把一个半径为R 1的圆周分成n份,然

后以每个等分点为圆心,以R s为半径画n个圆(关于作图的详细理论本教材第9章第1节作了专

门介绍,这里只作简单分析)。利用m a i n ( )函数的带参数形式,我们可以从键盘以命令行的方

式输入R 1和R s及屏幕的背景色。

#include <graphicsh> /包含图形库函数的头文件 /

#include <mathh>

#define pi 41415926

m a i n ( a r g c , a r g v )

int argc;char argv[]; / 定义带参数的m a i n ( ) /

{

int x,y,r1,rs,color;

double a;

int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,"\\bgi ")启;/动图形工作方式/

r1=atoi(argv[1]);/计算基础圆半径/

rs=atoi(argv[2]);/计算同心圆半径/

color=atoi(argv[3]);/背景色/

cleardevice();/清除图形屏幕/

setbkcolor(color);/设置背景色/

setcolor(4);/设置图形显示颜色/

for(a=0;a<=2pi;a+=pi/18)/绘制同心圆/

{

x=r1cos(a)+320;

y=r1sin(a)+240;

circle(x,y,rs);/以圆心坐标为x、y,半径为rs画圆/

}

getch();/等待按键继续/

close graph();/关闭图形工作方式/

}

若程序名为L6-29c,经编译、连结生成可执行文件L6-29exe。在 *** 作系统的环境下运行

程序,命令行方式为:

l6-29 40 20 3

则命令行与main()函数的参数有如图6-16所示的关

系。

在 C89 标准中,main( ) 是可以接受的。Brian W Kernighan 和 Dennis M Ritchie 的经典巨著 The C programming Language 用的就是 main( )。不过在最新的 C99 标准中,只有以下两种定义方式是正确的: int main(void){/示例代码/}//整数类型主函数(无类型)int main(int argc,char argv)//整数类型主函数(整数类型 统计参数个数,字符类型数组指针至字符[])main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如 *** 作系统)。  如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入return 0; ,表示程序正常退出。不过,我还是建议你最好在main函数的最后加上return 语句,虽然没有这个必要,但这是一个好的习惯。 也就是说在最新的C语言标准中强制要求main函数的返回值类型为int,main函数的返回值是传递给 *** 作系统,让 *** 作系统判断程序的执行情况(是正常结束还是出现异常)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12154926.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存