谁能告诉我如何访问在另一个函数中的函数中声明和定义的变量。例如
void function1()
{
string abc;
}
void function2()
{
I want to access abc here.
}
怎么做?我知道使用参数我们可以做到这一点,但还有其他方法吗?
C++ 方法是abc
通过引用传递给您的函数:
void function1()
{
std::string abc;
function2(abc);
}
void function2(std::string &passed)
{
passed = "new string";
}
您也可以将您的字符串作为指针传递并在函数 2 中取消引用它。这更像是 C 风格的做事方式,并不安全(例如,可以传入 NULL 指针,如果没有良好的错误检查,它将导致未定义的行为或崩溃。
void function1()
{
std::string abc;
function2(&abc);
}
void function2(std::string *passed)
{
*passed = "new string";
}
使其成为全球性的,然后双方都可以操纵它。
string abc;
void function1(){
abc = "blah";
}
void function2(){
abc = "hello";
}
如果您想在 function2 中使用 function1 中的变量,那么您必须:
如果你的function2是从function1调用的,那么你可以将它作为参数传递给function2。
void function1()
{
std::string abc;
function2( abc );
}
void function2( std::string &passed )
{
// function1::abc is now aliased as passed and available for general usage.
cout << passed << " is from function1.";
}
如果 function1 没有调用 function2,但两者都被 function3 调用,则让 function3 声明变量并将其作为参数传递给 function1 和 function2。
void parentFunction( )
{
std::string abc;
function1( abc );
function2( abc );
}
void function1( std::string &passed )
{
// Parent function's variable abc is now aliased as passed and available for general usage.
cout << passed << " is from parent function.";
}
void function2( std::string &passed )
{
// Parent function's variable abc is now aliased as passed and available for general usage.
cout << passed << " is from parent function.";
}
最后,如果 function1 和 function2 都没有被相互调用,也没有被代码中的同一个函数调用,那么声明该变量为全局共享,function1 和 function2 就可以直接使用它。
std::string global_abc;
void function1( )
{
cout << global_abc << " is available everywhere.";
}
void function2( )
{
cout << global_abc << " is available everywhere.";
}
绝对没有办法。块的变量只能从该块直接访问。
指向对象的指针/引用可以作为参数传递到从此块调用的函数中。