【问题标题】:How to access the variables of a function inside main?如何访问main中函数的变量?
【发布时间】:2020-02-26 03:04:19
【问题描述】:

我有一个程序,它使用 3 个单独的文件、一个用于函数声明的头文件、一个用于定义的 cpp 文件和一个用于调用函数的主驱动程序文件。对于我的函数定义,我在这些函数中创建了变量,我希望将这些变量用作在 main 中调用的 another 函数的参数。我只是想把它用语言表达出来,我很困惑,下面是一个例子。

头文件

void function01(char);
void function02(int, int, char);

Cpp 文件

void function01(char a){

    int var01 = 3;
    int var02 = 4;
    int var03 = 8;
    char a = 'a';
}

void function02(int num1, int num2, int num3){
    int sum = num1 + num2 + num3;    
}   

主文件

int main (void){

    function02(var01, var02, var03);


return 0;
}

我知道现在写的时候会调用一个错误。但无论如何我可以访问第一个函数中使用的变量,以便我可以在 main 中调用这些相同的变量并将它们传递给我的第二个函数吗?

【问题讨论】:

  • 您应该打开您的 C++ 书籍,翻到解释如何使用类以及它们如何工作的章节,然后开始阅读。不幸的是,stackoverflow.com 不能替代 C++ 书籍。
  • @SamVarshavchik 对于造成的混乱,我深表歉意,如果课程涉及这个问题,则不会提出这个问题。这个问题来自无法使用类的 C++ 作业。这就是为什么提出这个问题。我对课程的运作方式有相当的了解。我也不允许在我的问题所基于的场景中使用它们。不过,我感谢您的讽刺评论,谢谢您的帮助

标签: c++ function scope local-variables


【解决方案1】:

如何访问main函数中的变量?

不可能在调用函数的范围内访问函数的非静态局部变量。这些变量仅在函数执行期间存在。由变量命名的对象在函数调用时创建,在函数返回前销毁。

function01 目前完全没用,因为它既没有任何可在函数外部观察到的效果,也没有返回任何内容。调用该函数后,程序的状态将与您没有调用该函数完全相同。该函数也不对其参数做任何事情。

您可以做的是从函数返回值。只能返回一个值。但是您可以在一个类中对多个对象进行分组。例如,您可以像这样重写function01

struct my_example_class {
    int var01;
    int var02;
    int var03;
    char a;
};

my_example_class
function01(){
    return {3, 4, 8, 'a'};
}

然后调用另一个函数并将返回的成员对象作为另一个函数的参数:

auto r = function01();
function02(r.var01, r.var02, r.var03);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多