求教c语言main函数的参数问题

我是最初学者的那一个类,望讲的详细.谢谢... 我是最初学者的那一个类,望讲的详细.谢谢 展开
 我来答
353951452
2011-09-16 · 超过34用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:99.1万
展开全部
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所示的关
系。
terranlong
推荐于2016-06-30 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:4012万
展开全部
举个简单的例子,其中argc就表示参数的个数,argv就表示你输入的其他参数的内容
#include <stdio.h>
void main(int argc, char** argv)
{
printf("参数个数:%d\n", argc);
printf("第一个参数:%s\n", argv[0]);
printf("第二个参数:%s\n", argv[1]);
}
这个例子运行的时候输入:
文件名 abc
输出:
参数个数:2
第一个参数:文件名
第二个参数:abc
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
楼飇回骊娟
2019-12-26 · TA获得超过3764个赞
知道大有可为答主
回答量:3207
采纳率:34%
帮助的人:180万
展开全部
char
**argv一般都写成char
*argv[],表示字符串数组,具体见下面分析
main的两个参数表示命令行下运行该程序的参数,例如你编译这个程序生成了a.exe
然后在命令行下
a
arg1
arg2
arg3
然后回车运行,这时候argc就是4,argv[0]="a",argv[1]="arg1"....
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ACTIONCHYME
2011-09-16 · 超过12用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:27.4万
展开全部
简单点,刚开始要写一个简单的程序,能写一个输出“Hello world!!”程序:
最简单的代码:
#include <iostream>
using namespace std;

int main()//其实main函数不用带参数也可以的,那个是向导生成的,可以不加理会
{
cout<<"Hello world!"<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
峥梦痴人
2011-09-16
知道答主
回答量:45
采纳率:0%
帮助的人:26.9万
展开全部
看书吧,挺简单的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式