我想知道envp
代表什么,例如:
int main(int argc, char **argv, char **envp);
我还想知道argv
的确切含义:值或 vector 的v。
答案 0 :(得分:2)
含义是:
argv
代表 arg ument v ector argc
代表 arg ument c ount 和envp
,用于 env 熨斗 p 冬天。 我们可以讨论有关命名约定的好坏,但这是一种历史性用法,可以追溯到C语言的开头:B.W.Kernighan和D.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页的文字除包含语义外,不进一步包含argc
或argv
的派生指示。 envp
没有出现在索引中。
在1988年第二版中,相应部分的文字在第114页上说:
...两个参数。第一个(对于参数计数,通常称为
argc
)是调用程序所使用的命令行参数的数量;第二个(argv
,用于参数矢量)是…
再次在第二版中,envp
没有出现在索引中。
Unix规范,IEEE Std 1003.1-2008,2016,开放团体基本规范第7版,在environ
,execl
和相关例程的部分中进行了介绍。 :
某些实现为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 曲线图的环境变量。
词源学对于程序的含义并不是很重要,因此我建议不要过分担心。