main()函数输入参数的含义与介绍

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

….

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值