我用下面的代码打印了环境变量,我怀疑main函数中char *argv[]char *envp[]的参数之间是否有联系。
示例代码:-

#include <stdio.h>
int main(int argc, char *argv[], char *envp[])
{
  int index = 0;
  while (envp[index])
    printf("%s\n", envp[index++]);
}

删除参数argc和argv后执行程序时,出现分段错误。
有人请解释一下。!

最佳答案

争论被称为什么并不重要,重要的是他们的立场。
如果您删除了argcargv,那么您只有

int main(char *envp[])

这是非法的(因为第一个参数应该是整数)。
包括argcargv但不使用它们有什么问题?
另外,我应该指出envp是不可移植的。但是它被最广泛使用的C实现所接受。

关于c - 用C列出环境变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34304528/

10-12 20:32