分享
 
 
 

main函数的参数

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

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

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

才是参数。

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

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

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

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

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

#include <graphics.h> /*包含图形库函数的头文件* /

#include <math.h>

#define pi 4.1415926

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<=2*pi;a+=pi/18)/*绘制同心圆*/

{

x=r1*cos(a)+320;

y=r1*sin(a)+240;

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

}

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

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

}

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

程序,命令行方式为:

l6-29 40 20 3

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

系。

图6-16中,argv[0]是程序名,argv[1]是r1的值,

argv[2]是rs的值,argv[3]是屏幕的背景色。

由于指针数组均存放字符串,所需的圆半径及背景

色彩通过atoi()函数转换为整型。

通过带参数的main()函数,我们可以为自己的程序设置口令,在运行程序的命令行中给出所需的口令,正确则继续,否则退出。程序图形输出如图6-17所示。

[例6-30]将上述程序作修改,在程序的入口处添置密码,若给定密码正确,则显示图

形。

#include<graphics.h>

#include <math.h>

#define pi 4.1415926

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

int argc;char *argv[];

{

int x,y,r1,rs,color;

double a;

int gdriver=DETECT,gmode;

if (strcmp(argv[1],"pass")!=0) 设/置* 口令的比较*/

{ printf("passWord error!\n");

e x i t ( 0 ) ;

}

initgraph(&gdriver,&gmode,"..\\bgi ");

r1=atoi(argv[2]);

rs=atoi(argv[3]);

color=atoi(argv[4]);

cleardevice();

setbkcolor(color);

setcolor(4);

for(a=0;a<=2*pi;a+=pi/18)

{

x=r1*cos(a)+320;

y=r1*sin(a)+240;

circle(x,y,rs);

}

getch();

closegraph();

}

在操作系统的环境下运行程序, 命令行中增加口令“p a s s”,命令行方式为:

l6-30 pass 20 40 3

指针数组的存储字符串如图6-18所示。

若给定字符串argv[1]的值是pass,则程序正确运行,否则程序退出。口令正确的情况下,显示的图形为图6-17中的一个。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有