main()的参数是什么?

时间:2010-09-17 09:28:49

标签: c arguments

每次我用Xcode创建一个项目(标准命令行实用程序),我的 主要功能开始看起来像这样:

int main(int argc, const char * argv[])

括号中的所有内容是什么?为什么要使用它而不仅仅是 int main()

5 个答案:

答案 0 :(得分:43)

main接收启动程序时传递给它的参数数量和参数,以便您可以访问它。

argc包含参数的数量,argv包含指向参数的指针。 argv [argc]始终是NULL指针。参数通常包括程序名称本身。

通常,如果您运行的程序如./myprogram

  • argc是1;
  • argv [0]是字符串“./myprogram”
  • argv [1]是一个NULL指针

如果您运行的程序如./myprogram /tmp/somefile

  • argc是2;
  • argv [0]是字符串“./myprogram”
  • argv [1]是字符串“/ tmp / somefile”
  • argv [2]是一个NULL指针

答案 1 :(得分:4)

虽然标准没有涵盖,但在Windows和大多数Unix和Linux版本中,main最多可以包含三个参数:

int main(int argc, char *argv[], char *envp[])

最后一个类似于argv(这是一个字符串数组,如其他答案中所述,指定在命令行上传递的程序的参数。)

但它包含环境变量,例如PATH或您在操作系统shell中设置的任何其他内容。它以null结尾,因此不需要提供count参数。

答案 2 :(得分:1)

这些是用于使用命令行中的参数 -

argc包含参数的数量 命令行(包括程序名),argv是列表 实际参数(表示为字符串)。

答案 3 :(得分:1)

这些用于传递命令行参数。

例如:如果您想从外部将文件名传递给您的流程,那么

myExe.exe "filename.txt"

命令行“filename.txt”将存储在argv []中,命令行参数(计数)将存储在argc中。

答案 4 :(得分:1)

main()是一个实际上可以取最多三个参数或没有参数的函数。 以下是main()可以采用的参数如下: -

1)int argc:它保存在程序执行期间传递的参数数量(来自命令提示符),或者可以说它用于跟踪程序执行期间传递的变量数量。它不能保持负值。例如。如果您传递可执行文件“./a.out”,那么它将被视为参数,因此argc值将为0,即传递1个值。

2)char * argv []:它是一个字符指针数组,它保存在程序执行期间从命令提示符传递的字符串(字符数组)的地址。例如。在上面的例子中,如果您在cout中编写了argv [argc],即argv [0],那么它会将./a.out作为输出。

3)char * envp []:它也是一个字符指针数组,用于保存程序中使用的环境变量的地址。环境变量是一组动态命名值,它可以影响正在运行的进程在计算机上的行为方式。例如,运行进程想要存储临时文件,然后它将调用TEMP环境变量以获得合适的位置。