Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ char*argv[]和int-argc+的全球范围+;_C++_C_Variables_Main - Fatal编程技术网

C++ char*argv[]和int-argc+的全球范围+;

C++ char*argv[]和int-argc+的全球范围+;,c++,c,variables,main,C++,C,Variables,Main,我得到了主函数:main(intargc,char*argv[])。我想在其他函数中使用以下变量:argc、argv: int function() int main(int argc, char *argv[]) { ... function(); ... return 0; } int function() { int b=argc; return 0; } 但是编译器给出错误,argv未声明。如何在其他函数中使用这些变量?将它们作为参数传递给函数 int functi

我得到了主函数:main(intargc,char*argv[])。我想在其他函数中使用以下变量:argc、argv

int function()

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

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

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

将它们作为参数传递给函数

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

function(argc);

main

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

int function( int );

int main(int argc, char *argv[])
{
 ...
 function( argc );
将函数声明为

int function (int argc) {
    int b = argc;
    ....
}
在main-like中调用函数

function(argc);

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

在你主要

int g_argc;
char* g_argv[];
在你的主要职能中

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

int您的函数直接使用g_argc

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

当您也将其标记为
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;
}
intargc;
字符**argv;
void foo(){
printf(“argc:%d\n”,argc);
对于(int i=0;i
我想您的意思是“…argc未声明”,对吗?调用它时,只需将它们作为参数传递即可。如果是这样的话,那是因为你没有把它作为参数传递给functionPlease,please,停止编码,找一本好的C语言书或教程来学习它。这将为您省去很多麻烦。谢谢,但当我想使用char*argv[]作为函数的参数时,编译器显示错误,括号前面应该有内容]我使用Visual Studio 2012为什么它会说:error:'g_argv'的类型不完整?@appqui platform:因为,在函数参数列表之外,数组不等价,必须声明
char**g_argv取而代之。