我想知道缩写envp代表什么,例如这里:
envp
int main(int argc, char **argv, char **envp);
我也想知道argv中的v最初代表什么。v代表“价值”吗?或者是“向量”?
argv
v
0yg35tkg1#
其含义是:
argc
我们可以讨论好的或坏的命名约定,但它是一个历史性的用法,可以追溯到C语言的开始:B.W.Kernighan和D.Ritchie在1978年的第一版The C Programming language中已经使用argc和argv作为main()。envpwas added是UNIX开发的后续版本,是使用environ指针的替代方案。我在1986年的一本书中找到了它的参考资料,但它肯定更古老。它不需要计数,因为它是空终止的。请注意,它是not portable,因此应首选使用getenv()。
main()
environ
getenv()
xtupzzrd2#
在Kernighan和里奇的《The C Programming Language》(1978年)中,argv在第221页的索引中显示为:argv参数向量 110第110-114页的文本除了它们的语义外,没有进一步说明argc或argv的派生。envp未出现在索引中。在1988年的第二版中,第114页相应部分的文字说:两个论点第一个(通常称为argc,表示参数计数)是调用程序的命令行参数的数量;第二个(argv,表示参数向量)是……在第二版中,envp也没有出现在索引中。Unix规范,IEEE Std 1003.1-2008,2016,The Open Group Base Specifications Issue 7,在environ,execl和相关例程的部分中说:一些实现为main()提供了第三个参数,称为envp。这被定义为指向环境的指针。这与envp代表environmentpointer一致。
execl
ibps3vxo3#
C语言spec:
J.5.1环境参数
1在托管环境中,main函数接收第三个参数char *envp[],它指向一个空终止的char指针数组,每个指针都指向一个字符串,该字符串提供有关程序执行环境的信息(5.1.2.2.1)。注意, C++ 规范中没有列出第三个参数,尽管有些实现仍然可以使用它。
main
char *envp[]
mklgxw1f4#
我没有研究过常规参数名称的词源,所以请原谅我的推测性回答。“env”显然意味着环境或环境变量。envp中的'p'可能是参数的初始化,或者可能是指向类型的指针。甚至可能是P程序的环境变量。词源对于程序的意义并不重要,所以我建议不要太担心它。
4条答案
按热度按时间0yg35tkg1#
其含义是:
argv
代表*参数参数v向量 *argc
forargumentcount,以及envp
用于environmentpointer。我们可以讨论好的或坏的命名约定,但它是一个历史性的用法,可以追溯到C语言的开始:B.W.Kernighan和D.Ritchie在1978年的第一版The C Programming language中已经使用
argc
和argv
作为main()
。envp
was added是UNIX开发的后续版本,是使用environ
指针的替代方案。我在1986年的一本书中找到了它的参考资料,但它肯定更古老。它不需要计数,因为它是空终止的。请注意,它是not portable,因此应首选使用getenv()
。xtupzzrd2#
在Kernighan和里奇的《The C Programming Language》(1978年)中,
argv
在第221页的索引中显示为:argv
参数向量 110第110-114页的文本除了它们的语义外,没有进一步说明
argc
或argv
的派生。envp
未出现在索引中。在1988年的第二版中,第114页相应部分的文字说:
两个论点第一个(通常称为
argc
,表示参数计数)是调用程序的命令行参数的数量;第二个(argv
,表示参数向量)是……在第二版中,
envp
也没有出现在索引中。Unix规范,IEEE Std 1003.1-2008,2016,The Open Group Base Specifications Issue 7,在
environ
,execl
和相关例程的部分中说:一些实现为main()提供了第三个参数,称为envp。这被定义为指向环境的指针。
这与
envp
代表environmentpointer一致。ibps3vxo3#
C语言spec:
J.5.1环境参数
1在托管环境中,
main
函数接收第三个参数char *envp[]
,它指向一个空终止的char指针数组,每个指针都指向一个字符串,该字符串提供有关程序执行环境的信息(5.1.2.2.1)。注意, C++ 规范中没有列出第三个参数,尽管有些实现仍然可以使用它。
mklgxw1f4#
我没有研究过常规参数名称的词源,所以请原谅我的推测性回答。
“env”显然意味着环境或环境变量。
envp中的'p'可能是参数的初始化,或者可能是指向类型的指针。甚至可能是P程序的环境变量。
词源对于程序的意义并不重要,所以我建议不要太担心它。