主函数的3个参数问题

主函数的参数

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

{

       return 0;

}

 

第一个参数:int argv,即argument count,参数的个数,整型。

第二个参数:char *argv[],即argumentvalue,argv指向一个字符串的首地址,是字符串数组指针。

第三个参数:操作系统运行程序时通过envp参数将环境变量传递给程序。

 

 

上述三个参数在命令行参数下作用。下面在Linux系统下举例观察:

vim att.c   编写程序:

观察运行结果,注意在编译时命令行的参数:

./att  hello  zhaodawei  “test”   -l

即:

   argv[0] =” ./att”

   argv[1] =” hello”

   argv[2] = “zhaodawei”

   argv[3] =” “test””

   argv[4] = “-l”

argv表示有5个参数;5个参数是argv指针所指向的字符串常量。

 

再看一下envp所表示的内容 :

运行结果:

那么,到底什么是环境变量??环境变量到底有什么作用??

答:

环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。环境变量相对于给系统或用户应用程序设置的一些变量。例如WindowsDOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。

简单地说这里的“Path”就是一个变量,里面存储了一些常用命令所存放的目录路径。

环境变量相当于给系统或用户应用程序设置的一些参数, 具体起什么作用这当然和具体的环境变量相关. 比如path, 是告诉系统, 当要求系统运行一个程序而没有告诉它程序所在的完整路径时, 系统除了在当前目录下面寻找此程序外, 还应到哪些目录下去寻找; 再如tcvc++, set include=path1;path2; 是告诉编译程序到哪里去找.h类型的文件; 当然不仅仅是指定什么路径, 还有其它的作用的, set dircmd=/4 设置一个环境变量的作用是在使用dir命令时会把/4作为缺省的参数添加到你的dir命令之后, 就像你的每个命令都加了/4参数, 它实际上是给命令解释程序command设置的一个环境变量, 并且是给dir这个内部命令设置的。

DWORD GetEnvironmentVariable(LPCSTR lpName, LPSTR lpBuffer, DWORD dSize), 参数lpName是你要求查询的环境变量的名, lpBuffer是返回你所指定的环境变量的值的, dSize是告诉这个函数lpBuffer可以存放多少个字节.

分析本地故障时原因很可能就是因为环境变量中的默认路径被删除的结果,默认路径一经设置,当前系统如有程序运行时需要某些DLLEXE文件,以及Active控件时就会到所有默认路径中去查找,如果在这些目录中查找到相应的程序则自动加载,查找不到则报告缺少某某文件的错误信息。

 

补充:最近在看《程序员的自我修养》,从进程的角度去理解main参数的具体作用:

换了个角度,思路一下清晰了很多

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值