char * argv []和int argc C ++的全局范围

时间:2014-01-28 21:09:24

标签: c++ c variables main

我有主要功能: main(int argc,char * argv [])。我想在其他函数中使用这些变量: argc,argv

int function()

int main(int argc, char *argv[])
{
 ...
 function();
 ...
 return 0;
}

int function()
 {
 int b=argc;
 return 0;
 }

但是编译器会出错, argv 是未声明的。如何在其他函数中使用这些变量?

5 个答案:

答案 0 :(得分:6)

将它们作为参数传递给你的函数。

int function(int argc)
{
   int b = argc;
   return 0;
}

并致电

function(argc);
main

中的

答案 1 :(得分:3)

当您将此标记为C++时,您可以执行以下操作:

int argc;
char **argv;

void foo() {
    printf("argc: %d\n", argc);
    for (int i=0; i < argc; i++)
        printf("%s \n", argv[i]);
}

int main(int argc, char **argv)
{
    ::argc = argc;
    ::argv = argv;
    foo();
    return 0;
}

答案 2 :(得分:1)

argc和argv是main的局部变量。您可以将它们作为参数传递给其他函数。例如

int function( int );

int main(int argc, char *argv[])
{
 ...
 function( argc );

答案 3 :(得分:0)

将函数声明为

int function (int argc) {
    int b = argc;
    ....
}

主要调用函数

function(argc);

OR

使用静态变量来存储你的argc和argv,但不建议这样做

之前

int g_argc;
char* g_argv[];

在您的主要功能

g_argc = argc;
g_argv = argv;
function();

你的函数直接使用g_argc

答案 4 :(得分:0)

另一种选择是使两个全局变量保持与argc和* argv相同的值