您的位置:首页 > 编程语言 > C语言/C++

main函数的参数传递赋值

2016-12-29 15:55 106 查看
如果是调试需要用到,那么可以通过命令参数给main传递参数,右键 工程名字出现:



修改命令参数即可。

main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:

main (argc,argv)

int argv;

char *argv[];或写成:

main (int argc,char *argv[])

  由于main函数不能被其它函数调用, 因此不可能在程序内部取得实际值。那么,在何处把实参值赋予main函数的形参呢? 实际上,main函数的参数值是从操作系统命令行上获得的。当我们要运行一个可执行文件时,在DOS提示符下(也可以选择开始菜单运行命令)键入文件名(注意文件路径),再输入实际参数即可把这些实参传送到main的形参中去。

  DOS提示符下命令行的一般形式为: C:>可执行文件名 参数 参数……;(也可以选择“开始”菜单“运行”命令:可执行文件名 参数 参数……;) 但是应该特别注意的是,main 的两个形参和命令行中的参数在位置上不是一一对应的。因为,main的形参只有二个,而命令行中的参数个数原则上未加限制。argc参数表示了命令行中参数的个数(注意:文件名本身也算一个参数),argc的值是在输入命令行时由系统按实际参数的个数自动赋予的。

[例] 利用图形库函数绘制一个变化的环。它是把一个半径为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,"c\\tc\\bgi");/*启动图形工作方式,我的是c\\tc\\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();/*等待按键继续*/
closegraph();/*关闭图形工作方式*/
}


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

程序,命令行方式为:

a 40 20 3

argv[0]是程序名,argv[1]是r1的值,

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

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

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

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

第一个带参数的main。

复制代码

#include <iostream.h>

int main(int argc,char *argv[])
{
for(inti=0;i<argc;i++)
{
cout<<argv[i]<<'\t';              //
}
return0;
}
/*

int argc, char **argv 用于运行时,把命令行参数传入主程序。

argc -- 命令行参数总个数,包括 可执行程序名。

argv[i] -- 第 i 个参数。

argv[0] -- 可执行程序名。

*/


关于带参数的main函数网络收集:

int main(int argc,char **argv) 这里面的**argv含义··

是用来传递参数的,假如你编译成的文件名是a.exe,那么在命令提示符下可以通过a.exe12 34来向程序传递参数,这时两个参数就会传递到字符串数组argv中,注意此时实际传递了三个参数,第一个参数是文件名,第二个参数是12,第三个是34,而argc就是参数个数。

int argc, char **argv 用于运行时,把命令行参数传入主程序。

argc – 命令行参数 总个数,包括 可执行程序名。

argv[i] – 第 i 个参数。

argv[0] – 可执行程序名。

// 例如运行:

abc.exe

argc 等于 1, argv[0] 是 “abc.exe”

// 例如运行:

rec.exe 4 5.2

argc 等于 3, argv[0] 是 “rec.exe”, argv[1] 是 “4”, argv[2] 是 “5.2”.

主函数里若有:

int x;

float y;

char s[80];

strcpy(s,argv[0]); // 程序名存入 了 s

sscanf(argv[1],”%d”,&x); // x 得到数值4

sscanf(argv[2],”%f”,&y); // y 得到数值 5.2

ANSI-C(C89/C99)的话main()函数有2种主要形式。

(1) int main(void)

(2) int main(int argc, char *argv[])

(2)也可写成int main(int argc, char **argv)

argv[argc]放空指针(NULL指针)。

argc和argv可以用别名。

另外,还有一种受系统限制的形式:

int main(int argc, char *argv[], char *envp[])

前两个参数同(2),第三个参数envp[]放环境变量。

这个形式很少用。

所以严格讲,

ANSI-C推荐的带参数的main()函数只有上面(2)这一种。

另外,搜集了一下C和C++中常见的几种形式:

复制代码

(1) main()

(2) int main()

(3) int main(void)

(4) int main(int, char**)

(5) int main(int, char*[])

(6) int main(int argc, char **argv)

(7) int main(int argc, char *argv[])

(8) int main( int argc, char *argv[], char*envp[])

(9) void main(void)

(1)是(3)的简写。不推荐使用。

(2)是(3)的简写。在C++中是正确的形式。

(3)在C和C++中都是正确的形式。推荐使用。(还有缺省int的main(void)形式)。

(4)和(5)是不用参数时的一种写法。编译器级别高时会警告。不推荐使用。

(6)是(7)的另外写法。两种都可以,凭个人爱好。

(7)是带参数的正确的形式。推荐使用。

(8)是一种很少用的写法,且受系统限制。

(9)一般不认为是正确的写法。但是在嵌入式系统中有使用(包括void main()形式)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C C++ main函数