envp代表什么?

时间:2019-02-16 13:31:28

标签: c++ c

我想知道envp代表什么,例如:

int main(int argc, char **argv, char **envp);

我还想知道argv的确切含义: vector 的v。

4 个答案:

答案 0 :(得分:2)

含义是:

  • argv代表 arg ument v ector
  • argc代表 arg ument c ount
  • envp,用于 env 熨斗 p 冬天

我们可以讨论有关命名约定的好坏,但这是一种历史性用法,可以追溯到C语言的开头:B.W.KernighanD.Ritchie已经使用过argc和{ {1}}在The C Programming language的第一版中于argv发行。

稍后在UNIX开发中使用main() was added,它是使用environ指针的替代方法。我从1986年的一本书中找到了对它的引用,但是它的确更老了。它不需要计数,因为它以null终止。请注意,它是not portable,因此应首选使用getenv()

答案 1 :(得分:1)

在Kernighan和Ritchie的 C编程语言,1978年,argv在索引中的第221页显示为:

  

argv自变量向量110

第110-114页的文字除包含语义外,不进一步包含argcargv的派生指示。 envp没有出现在索引中。

在1988年第二版中,相应部分的文字在第114页上说:

  

...两个参数。第一个(对于参数计数,通常称为argc)是调用程序所使用的命令行参数的数量;第二个(argv,用于参数矢量)是…

再次在第二版中,envp没有出现在索引中。

Unix规范,IEEE Std 1003.1-2008,2016,开放团体基本规范第7版,在environexecl和相关例程的部分中进行了介绍。 :

  

某些实现为main()提供了第三个参数,称为envp。定义为指向环境的指针。

这与envp代表 env 熨烫工具 p 冬天的情况一致。

答案 2 :(得分:0)

根据C语言规范:

  

J.5.1环境参数
  1在托管环境中,main函数接收第三个参数char *envp[],   指向一个以空值终止的char指针数组,每个指针都指向一个字符串   提供有关此程序执行环境的信息   (5.1.2.2.1)。

请注意,尽管某些实现仍适用于C ++语言规范,但第三个参数并未列出。

答案 3 :(得分:0)

我尚未研究常规参数名称的词源,因此请原谅我的推测性答案。

'env'显然是指环境或环境变量。

envp中的'p'可能是参数的初始值,或者可能是引用该类型的指针。甚至是 P 曲线图的环境变量。

词源学对于程序的含义并不是很重要,因此我建议不要过分担心。