argc 和 argv 用于除 main 以外的函数

Posted

技术标签:

【中文标题】argc 和 argv 用于除 main 以外的函数【英文标题】:argc and argv for functions other than main 【发布时间】:2017-09-29 11:13:33 【问题描述】:

如果我写一个这样的函数:

void myfunc(const int argc, const char *argv[]) 

argc 和 argv 会自动从命令行参数中获取它们的值,还是需要从 main 中传递它们的值?

【问题讨论】:

它必须故意传递给函数。例如myfunc(argc-1, argv+1); 只有 main() 从命令行获取值。 Access command line arguments without using char **argv in main的可能重复 【参考方案1】:

argc和argv必须传,如:

int main(int argc, char *argv[])
   
   myfunc(argc, argv);
   return(0);
    

【讨论】:

【参考方案2】:

不,如果您调用函数的参数argcargv,没有什么特别的事情发生。调用者必须传递它们,就像任何其他参数一样。

【讨论】:

【参考方案3】:

参数名称​​本身并不重要。你可以这样写main:

int main(int count, char *array[]) ...

如果你喜欢。 main 是一个 特殊 函数,因为它是 C 程序的默认入口点,并且命令行参数值被传递给它,仅此而已。

将函数声明/定义为:

void myfunc(int argc,char *argv[]) ...

完全一样:

void myfunc(int foo,char *bar[]) ...

并且可以从您喜欢的任何(可能的)点使用您喜欢的任何(可接受的)值调用这样的函数。

【讨论】:

以上是关于argc 和 argv 用于除 main 以外的函数的主要内容,如果未能解决你的问题,请参考以下文章

int main(int argc,char* argv[]) 解析

在 Eclipse 中使用 argc 和 argv?

int main(int argc, char* argv[]) 和 int main(int argc, char** argv) [关闭]

main (int argc,char *argv[]) 或main (int argc,char **argv)区别

C++ main函数中参数argc和argv含义及用法

int main(int argc,char* argv[])详解