使用C列出环境变量

时间:2015-12-16 05:27:06

标签: c

我使用下面的代码来打印环境变量。我怀疑主函数中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后执行程序时,我得到分段错误。 有人请解释一下。!

2 个答案:

答案 0 :(得分:1)

调用参数的内容并不重要;只有他们的位置很重要。

如果您删除了argcargv,那么您只有

int main(char *envp[])

这是非法的(因为第一个参数应该是一个整数)。

包含argcargv,但不使用它们有什么问题?

另外,我应该指出envp不可移植。但它被最广泛使用的C实现所接受。

答案 1 :(得分:1)

main被称为int main(int argc,char ** argv,char ** envp)。

如果删除argc,argv,它将是

int main(char * envp [])

所以envp将被设置为argc,并且当envp [index ++]

时会出现分段错误