Main函数参数argc,argv

来源:互联网 发布:卖鞋子的淘宝店名大全 编辑:程序博客网 时间:2024/04/29 16:07

C/C++语言中的main函数,经常带有参数argc,argv,如下:

int main(int argc, char** argv)int main(int argc, char* argv[])
这两个参数的作用是什么呢?argc 是指命令行输入参数的个数,argv存储了所有的命令行参数。假如你的程序是hello.exe,如果在命令行运行该程序,(首先应该在命令行下用 cd 命令进入到 hello.exe 文件所在目录) 运行命令为:
hello.exe Shiqi Yu
那么,argc的值是 3,argv[0]是"hello.exe",argv[1]是"Shiqi",argv[2]是"Yu"。
Image:Hello-argc-argv.png下面的程序演示argc和argv的使用:
#include <stdio.h>
int main(int argc, char ** argv)
{ int i; for (i=0; i < argc; i++) printf("Argument %d is %s./n", i, argv[i]); return 0;}
假如上述代码编译为hello.exe,那么运行
hello.exe a b c d e
将得到Argument 0 is hello.exe.Argument 1 is a.Argument 2 is b.Argument 3 is c.Argument 4 is d.Argument 5 is e.

main()函数是C应用程序的入口点,编译后的可执行文件都是从main函数开始执行的。在执行过程开始时,会执行main()函
数,在main()函数执行完毕时,执行过程就结束了。

主函数main()可以有或没有参数列表,通常最多支持3个参数。

1.int main()

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

3.int main(int argc, char **argv)

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

上述的1,2,3比较常用,第4种用法比较少见。

main()函数一般用int或者void形的。用int型定义main更好些,因为在结束的时候可以返回给操作系统一个值以表示执行情况。 

下面介绍一下main函数各个参数的含义:
1.int argc  

表示在命令行下输入命令的时候,一共有多少个参数。例如:

./test arg1 arg2

那么argc的值是3,命令名加上两个参数,一共三个参数。argc代表参数的数量, main()函数本身是在索引0为的第一参数。 所以, argc总是至少为1 。

2.char *argv[]

输入参数数组,真正的参数以字符串数组(即第2个参数argv[])的形式来传递。每一个字符串均有自己意思。argv[0]存放可执行程序本身。

例如:

./test

argc的值是1,argv[0]的值是   "test"  

./test arg1 arg2

argc的值是3,argc[0]的值是"test",argc[1]的值是" arg1 ",argc[2]的值是" arg2"。

3.char *envp[]

相对来说用得比较少,它是用来取得系统的环境变量的。Envp是编译器扩展地语法,标准是不支持的,虽然现在很多编译器都支持,但是考虑到程序的移植性更好,进行避免使用。要获得环境变量的值还是用getenv比较好。

Linux的环境变量可以通过env命令察看,通过setenv 或export进行设置。例如:

$ env

PATH=/home/global/Linux-x86_64-rhel4/bin:/home/global/unknown/bin:/home/tools/infra/SGE/bin/lx24-amd64:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin

SHELL=/bin/tcsh

SSH_CLIENT=::ffff:10.101.0.131 49427 22

SSH_CONNECTION=::ffff:10.101.0.131 49427 ::ffff:10.101.0.119 22

SSH_TTY=/dev/pts/1

TERM=xterm

HOSTTYPE=x86_64-linux

VENDOR=unknown

OSTYPE=linux

MACHTYPE=x86_64

SHLVL=1

GROUP=users

HOST=sclab-19

下面的例程,演示了arg的使用和含义。

/* argtest.c */

#include<stdio.h>

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

{

  int i;

  printf("You have inputed total %d argments/n", argc);

    /* argv */

  for (i = 0; i < argc; i++)

  { 

    printf("/targ%d is : %s/n", i, argv[i]);

  }

   /* envp */

  printf("This is enviroment info:/n");

  for (i = 0; envp[i] != NULL; i++)

  {

    printf("/t%s/n", envp[i]);

  }

  return 0;

}

$ gcc -g argtest.c -o argtest

$ ./argtest this is arg test

You have inputed total 5 argments

        arg0 is : ./argtest

        arg1 is : this

        arg2 is : is

        arg3 is : arg

        arg4 is : test

This is enviroment info:

….

PATH=/home/global/Linux-x86_64-rhel4/bin:/home/global/unknown/bin:/home/tools/infra/SGE/bin/lx24-amd64:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin

….

原创粉丝点击