int main(int argc, const char * argv[])
括号里的东西是什么?为什么要用这个,而不是只用int main()
?
main函数接收程序启动时传递给它的参数个数和参数内容,因此你可以访问它们。
argc包含了参数的个数,argv包含了指向参数的指针。 argv[argc]始终是一个NULL指针。这些参数通常包括程序名称本身。
通常情况下,如果你像这样运行程序:./myprogram
如果你像这样运行程序:./myprogram /tmp/somefile
虽然不被标准所覆盖,但在Windows和大多数Unix和Linux系统中,main
函数可以拥有最多三个参数:
int main(int argc, char *argv[], char *envp[])
argv
类似(argv
是一个字符串数组,如其他答案所述,用于指定在命令行中传递给程序的参数)。但它包含环境变量,例如 PATH
或您在操作系统 shell 中设置的任何其他变量。它以 null 结尾,因此不需要提供计数参数。C89
或C99
)描述。 - pmg以下内容是关于使用命令行参数的:
argc 包含命令行中的参数数量(包括程序名称),而 argv 是实际参数列表(表示为字符串)。
这些用于传递命令行参数。
例如:如果您想从外部向进程传递文件名,则
myExe.exe "filename.txt"
命令行中的"filename.txt"将被存储在argv[]中,而命令行参数的数量(计数)将被存储在argc中。
main()是一个函数,实际上可以最多接受三个参数或者没有参数。main()可以接受的参数如下:
1) int argc: 它保存传递的参数数量(从命令提示符)在程序执行期间或者说它用于跟踪在程序执行期间传递的变量数量。它不能保存负值。例如,如果您传递可执行文件“./a.out”,那么它将被视为参数,因此argc值将为0,即传递了1个值。
2) char *argv[]: 这是一个字符指针数组,它保存从命令提示符传递的字符串(字符数组)的地址,在程序执行期间。例如,在上面的例子中,如果你在cout中写了argv[argc]即argv[0],那么输出将会是./a.out。
3) char*envp[]: 这也是一个字符指针数组,用于保存程序中使用的环境变量的地址。环境变量是一组动态命名的值,可以影响计算机上运行进程的方式。例如,正在运行的进程想要存储临时文件,那么它将调用TEMP环境变量来获取一个合适的位置。
int main(int argc, char *argv[])
(或等效形式int main(void)
),但不识别你使用const
修改的argv
版本(这是你的实现提供的扩展)。如果你想让你的代码可移植到其他实现中,就要去掉const
。 - pmgargc
和argv
是什么,可以直接用void
替换它们。 - David Thornley