欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

main输入参数的含义和介绍 博客分类: C/C++语言 互联网main函数参数问题 

程序员文章站 2024-03-24 18:16:04
...
本篇来源于互联网******************************************************
http://blog.csdn.net/study_2011/article/details/7392388

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