c++中main函数参数的意义

int main( int argc , char *argv[] , char *envp[] )
            main()函数一般用int或者void形的。我比较喜欢用int型定义main。因为在结束的时候可以返回给操作系统一个值以表示执行情况。


            int argc
            这个东东用来表示你在命令行下输入命令的时候,一共有多少个参数。比方说你的程序编译后,可执行文件是test.exe
            D:/tc2>test
            这个时候,argc的值是1
            但是
            D:/tc2>test.exe myarg1 myarg2
            的话,argc的值是3。也就是 命令名 加上两个参数,一共三个参数

            char *argv[]
            这个东东用来取得你所输入的参数
            D:/tc2>test
            这个时候,argc的值是1,argv[0]的值是 "test"
            D:/tc2>test myarg1 myarg2
            这个时候,argc的值是3,argc[0]的值是"test",argc[1]的值是"myarg1",argc[2]的值是"myarg2"。

            这个东东一般用来为程序提供非常重要的信息,如:数据文件名,等等。
            如:copy a.c b.txt
            这个时候,a.c和b.txt就是所谓的“非常重要的信息”。不指定这两个文件,你没法进行拷贝。
            当你的程序用到argc和argv这两个参数的时候,可以简单地通过判断argc的值,来看看程序的参数是否符合要求

            char *envp[]
            这个东东相对来说用得比较少。它是用来取得系统的环境变量的。
            如:在DOS下,有一个PATH变量。当你在DOS提示符下输入一个命令(当然,这个命令不是dir一类的内部命令)的时候,DOS会首先在当前目录下找这个命令的执行文件。如果找不到,则到PATH定义的路径下去找,找到则执行,找不到返回Bad
            command or file name
            在DOS命令提示符下键入set可查看系统的环境变量
            同样,在UNIX或者LINUX下,也有系统环境变量,而且用得比DOS要多。如常用的$PATH,$USER,$HOME等等。
            envp保存所有的环境变量。其格式为(UNIX下)
            PATH=/usr/bin;/local/bin;
            HOME=/home/shuui
            即:
            环境变量名=值
            DOS下大概也一样。
            环境变量一般用来为程序提供附加信息。如,你做了一个显示文本的内容的程序。你想控制其一行中显示的字符的个数。你可以自己定义一个环境变量(UNIX下)

            %setenv NUMBER = 10
            %echo $NUMBER
            10
            然后你可以在程序中读入这个环境变量。然后根据其值决定一行输出多少个字符。这样,如果你不修改环境变量的话,你每次执行这个程序,一行中显示的字符数都是不一样的

            下面是一个例子程序

            /* argtest.c */
            #include<stdio.h>
            int main( int argc , char *argv[] , char *envp[] )
            {
            int i;

            printf( "You have inputed total %d argments/n" , argc );
            for( i=0 ; i<argc ; i++)
            {
            printf( "arg%d : %s/n" , i , argv[i] );
            }

            printf( "The follow is envp :/n" );
            for( i=0 ; *envp[i]!='/0' ; i++ )
            {
            printf( "%s/n" , envp[i] );
            }
            return 0;
            }


            D:/>argtest this is a test programe of main()'s argments
            You have inputed total 9 argments
            arg0 : D:/TC/NONAME.EXE
            arg1 : this
            arg2 : is
            arg3 : a
            arg4 : test
            arg5 : programe
            arg6 : of
            arg7 : main()'s
            arg8 : argments
            The follow is envp :
            TMP=C:/WINDOWS/TEMP
            TEMP=C:/WINDOWS/TEMP
            PROMPT=$p$g
            winbootdir=C:/WINDOWS
            PATH=C:/WINDOWS;C:/WINDOWS/COMMAND
            COMSPEC=C:/WINDOWS/COMMAND.COM
            SBPCI=C:/SBPCI
            windir=C:/WINDOWS
            BLASTER=A220 I7 D1 H7 P330 T6
            CMDLINE=noname this is a test programe of main()'s argments 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值