C中主要函数的第四个参数指向什么?

时间:2012-08-18 17:16:28

标签: c++ c arguments main

我们有

int main(int argc, char** argv, char** envc)

为普通人。但是我想知道是否还有其他论点可以有而不是这些。如果有的话,它指的是什么?

5 个答案:

答案 0 :(得分:6)

嗯,继续崩溃:

  • argc - C标准
  • argv - C标准
  • env - 适用于大多数UNIX和MS Win,但不适用于标准
  • apple - Mac OSX和Darwin
  • 作为第四个参数传递的其他信息

答案 1 :(得分:4)

答案在C和C ++中有所不同:

  • 在C ++中,main必须始终返回int。每个实现都必须接受()(int, char**)签名。实现可以接受任何其他签名。 如果接受的签名以int, char**, ...开头,那些应该具有通常的含义。 (此外,main获取C链接,不得重载,不得为模板,且不得调用。)

  • 在C中,main可以采取任何形式。但是,每个实现都必须接受int(void)int(int, char**)类型。

正如您所注意到的,某些环境支持并符合这些指南的一个流行签名是int main(int argc, char * argv[], char * env[]),其中第三个参数包含指向环境的指针。其他扩展是可以想象的;检查平台的文档。

答案 2 :(得分:3)

只有argc和argv是标准参数。之后的任何事情都取决于你的系统和编译器。

答案 3 :(得分:2)

我认为这回答了你的问题:

http://en.wikipedia.org/wiki/Main_function#C_and_C.2B.2B

答案 4 :(得分:1)

它是标准的延伸:
但它应该提供对环境的访问:

int main(int argc, char** argv, char** envc)
{
    // It is an array of pointers to C-String
    // The array is terminated with a NULL pointer.
    // So you can loop over with it like this.
    for(int loop = 0;envc[loop] != NULL; ++loop)
    {
        fprintf(stdout, "%s\n", envc[loop]);
    }
}
  • argc:argv中有效元素的数量
  • argv:命令行参数的C-Strings数组。
  • envc:环境的C-Strings数组(以NULL指针终止)。

最好使用getenv

char * getenv ( const char * name );

http://www.cplusplus.com/reference/clibrary/cstdlib/getenv/