C语言程序设计(第6章指针)8
6.8主函数的参数
C程序的特点是所有程序都是用函数组装的。Main(),称为main函数,是所有程序运行的入口。剩下的函数分为两种,带参数的和不带参数的,都是由main()函数或者其他通用函数调用的。如果调用带参数的函数,则在调用该函数时会传递参数。
main( )
{
。。。
y1 = f1(x1,x2);
。。。
}
f1(int a,int b)
{
。。。。
Y ^ 2 = f ^ 2(x ^ 3,x ^ 4);
...
}
F2 (int m,int n)
{
...
}
其实main()函数可以是无参数函数,也可以是无参数函数。对于带参数的表单,您需要向其传递参数。但是没有其他函数可以调用main()函数。当然也不能传递给main()函数。它只能从程序外部传递。这个具体问题怎么解决?
我们先来看看main()函数的参数形式:
main (argc,argv)
intargc,char * argv[];
{
...
}
从函数参数的形式来看,它包含一个整数和一个指针数组。当一个C源程序被编译链接后,会生成一个扩展名为。E X E,可以直接在操作系统下运行,换句话说就是由系统启动运行。由于main()函数不能被其他函数调用和传递,所以只能由系统在启动时传递。
在操作系统环境中,一个完整的运行命令应该包括两部分:命令和相应的参数。格式为:
命令参数1参数2...参数n & iquest
这种格式也称为命令行。命令行中的命令是可执行文件的文件名,后面是以空分隔的参数,是对命令的进一步补充,即传递给main()函数的参数。
命令行与main()函数的参数有如下关系:
设置命令行为:program str 1 str 2 str 3 str 4 str 5
其中program是文件名,即program.c编译链接后生成的可执行文件program.c,后面跟五个参数。对于main()函数,它的参数arc记录了命令行中命令和参数的数量,总共六个。指针数组的大小由参数argc
的值决定,它是char *argv。指针数组的值如图6-1-5所示。
数组的每个指针都指向一个字符串。应该注意,接收指针数组的每个指针都是从命令行的开头接收的,首先接收的是命令,随后是参数。
下面的示例说明了如何正确使用main()函数和参数。
[例6-29]利用图形库函数绘制变化的圆环。它把半径为R 1的圆分成N份,然后以每份平分线为圆心,以R s为半径画N个圆(详细的画图理论在本教材第九章第一节有专门介绍,这里只做简单分析)。利用main()函数的参数形式,我们可以通过命令行从键盘输入R1和Rs以及屏幕的背景色。
#include /*包含图形库函数的头文件*/
# include
# definepi 4.1415926
main(argc,argv)
intargc;char * argv[];/*用参数定义main () */
{
int x,y,R1,RS,color
双a;
int gdriver=DETECT,gmode
initgraph(&gdriver,&gmode,"..\ \ bgi ");/*启动图形工作模式*/
R1 = atoi(argv[1]);/*计算基圆半径*/
RS = atoi(argv[2]);/*计算同心圆的半径*/
color = atoi(argv[3]);/*背景色*/
clear device();/*清除图形屏幕*/
setbkcolor(color);/*设置背景色*/
Set color(4);/*设置图形显示颜色* /
为(a = 0;a {
x = R1 * cos(a)+320;
y = R1 * sin(a)+240;
circle(x,y,RS);/*以X,Y为圆心坐标,半径为r s */
}
get()画一个圆;/*等待键继续*/
closegraph();/*关闭图形工作模式* /
}
如果程序名是L 6-29.c,编译链接生成可执行文件L6-29.exe。在操作系统环境下运行程序,命令行模式为
l6-29 40 20 3
。然后命令行和main()函数的参数如图6-16所示。
[6]
在图6-16中,argv[0]是程序名,argv[1]是r1的值,argv[2]是rs的值,argv[3]是屏幕的背景色。因为指针数组都是存储字符串的,所以需要的圆半径和背景色都是通过atoi()函数转换成整数。
通过带参数的main()函数,我们可以为自己的程序设置密码,在运行程序的命令行中给出需要的密码。如果正确,继续,否则退出。
0条评论