envp代表什么

What does envp stand for?

本文关键字:什么 envp      更新时间:2023-10-16

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

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

我也想知道argv中最初的v是什么。是"价值"的v?也许是" vector"?

含义是:

  • argv代表 arg ument v ector
  • argc for arg ument c out
  • envp for env 熨斗 p ointer 。。

我们可以讨论好是坏命名惯例,但这是一种历史悠久的用法,可以追溯到C语言的开始:B.W.Kernighan和D.Ritchie在其第一版的main()中使用了argcargv> C编程语言在1978年。

后来从UNIX开发中添加了envp,是使用environ指针的替代方法。我在1986年的一本书中找到了对它的参考,但它肯定还年龄较大。它不需要计数,因为它的终止是无效的。请注意,它不是便携式的,因此应首选使用getenv()

在Kernighan和Ritchie中, c编程语言,1978, argv在索引中显示,第221页,AS:

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 Ointer。

来自C语言规格:

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

请注意,第三个参数未在C 语言规范中列出,尽管某些实现仍然可以。

我尚未研究传统论证名称的词源,所以请原谅我的投机性答案。

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

envp中的" p"可能是参数的初始主义,也许是指指指的是类型的指针。也许甚至是 p rogram的环境变量。

词源对程序的含义并不重要,因此我建议不要过多地担心它。