main()的参数是什么?

每次我用Xcode创build一个项目(标准的命令行工具),我的主要function开始看起来像这样:

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

圆括号里面是什么? 为什么使用这个而不是只是int main()

main在你启动程序的时候会收到一些参数和参数,所以你可以访问它。

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

通常如果你像./myprogram一样运行你的程序

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

如果你像./myprogram /tmp/somefile那样运行你的程序

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

虽然没有被标准覆盖,但在Windows和大多数Unix和Linux上, main可以有三个参数:

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

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

但是它包含了环境variables,例如PATH或者你在OS shell中设置的其他东西。 它是空的终止,所以没有必要提供一个计数参数。

这些是从命令行使用参数 –

argc包含命令行上的参数个数(包括程序名),argv是实际参数列表(以string表示)。

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

例如:如果你想从外面传递一个文件名到你的进程

 myExe.exe "filename.txt" 

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

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

1)int argc:它保存在程序执行过程中传递的参数个数,或者可以说它是用来跟踪程序执行过程中传递的variables个数。 它不能保持负值。 例如。 如果你传递可执行文件“./a.out”,那么这将被视为一个参数,因此argc值将为0,即1值被传递。

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

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