我可以将参数传递给C中的main()吗

我可以将参数传递给C中的main()吗,c,C,我不确定它是如何工作的,但是否可以像C中的任何其他函数一样将参数传递给main()函数?如果是这样,请解释它是如何工作的?您不能向它“传递参数”,因为您不能调用它本身。它是您的应用程序的入口点。它通过操作系统从父进程获取参数 intmain(intargc,char**argv)是接收参数的方式。如何“发送”它们是通过某种类型的exec调用完成的,比如execv() 这是shell在参数中发送的方式,因此如果运行: /myprogram arg1 arg2 那么你就有了这些论点。请注意,arg

我不确定它是如何工作的,但是否可以像C中的任何其他函数一样将参数传递给main()函数?如果是这样,请解释它是如何工作的?

您不能向它“传递参数”,因为您不能调用它本身。它是您的应用程序的入口点。它通过操作系统从父进程获取参数

intmain(intargc,char**argv)
是接收参数的方式。如何“发送”它们是通过某种类型的
exec
调用完成的,比如
execv()

这是shell在参数中发送的方式,因此如果运行:

/myprogram arg1 arg2

那么你就有了这些论点。请注意,
argv[0]
是程序名或“zeroth”参数,在本例中是
“/myprogram”
部分。这是否回答了您的问题?值得注意的是,应用程序程序员不能决定main的格式。只有编译器才能做到这一点。如果编译器是一个“一致的托管实现”(即操作系统上运行的程序的符合C的编译器),则需要支持
int main(int argc,char*argv[])
。它可能还支持特定于编译器的表单,在这种情况下,您必须阅读编译器文档才能找到哪些表单。到底是什么原因导致您无法调用它?据我所知,您也可以像调用任何其他函数一样调用它。@EmanuelP如果您从
main()
调用函数调用
main()
,您是在请求失控递归。如果你让它可以被递归调用,我不知道你为什么会经历这样的麻烦,这根本没有任何意义。从技术上讲,在C语言中可以做很多事情,但这些都超出了约定的范围,因此不应该做。这就是为什么我说“本身”。