繁体   English   中英

如何访问在另一个函数中的 main 中声明的 int a?

[英]How to access int a declared in main in another function?

#include <iostream>    
using namespace std;

void b();

int main() {

    int a = 10;
    b(); 
}

void b() {
    int a;
    cout<<"Int a="<<a;
}

我期待打印的值a使用功能主要适用范围,以我目前的代码,它打印Int a=0 我怎样才能做到这一点?

不要在b()声明一个全新a b() amain传递给b()然后打印出来。

例如:

#include <iostream>

void b(int whatever_name_you_want_here);

int main()
{
    int a = 10;
    b(a);
}

void b(int whatever_name_you_want_here)
{
    std::cout << "Int a=" << whatever_name_you_want_here;
}

//将您的代码更改为以下内容,它将为您提供您正在寻找的结果。 在您的代码中,无法将 main 上的 int a 传递给 b(); 除非 b 接受您希望函数输出的类型的参数。

#include<iostream>
 
void b(int);

int main()

{

    int a = 10;
    b(a);
}
void b(int a){
    std::cout << "int a=" << a;
}

您想要实现的目标要求您将值传递给函数。 让我举一个例子来说明如何做到这一点。

#include<iostream>

void print_value(int value){
    std::cout << "Value is: " << value << '\n';
}

int main(){

    int a = 5;
    print_value(a);
    return 0;
}

程序中唯一缺少的是参数。 我不会费心在这里解释整个事情,因为网上有很多文章。 这是一个简单的。 请参阅此以了解函数在 C++ 中的工作原理

我想主要问题是没有意识到称为范围的非常重要的东西! 作用域通常由{打开并由}关闭

除非您创建一个全局变量,否则它只会在它被引入(声明)的范围内被知道。

您在全局范围内声明了函数b

void b();

所以在此之后,包括main在内的所有其他功能都知道并可以使用它。

但是您在main的范围内声明了变量a

    int a = 5;

所以只有 main 知道它并且可以使用它。

请注意,与其他一些编程语言不同,名称不是唯一的,并且程序的每个部分都无法在 c 和 c++ 中识别它们。 所以部分:

void b() {
    int a;

不会强制函数b识别在main函数中声明的a并且它是一个新的a

所以要纠正这个错误,只需将变量a的值或引用a给函数b

#include <iostream>    

void b(int&);

int main() {
    int a = 10;
    b(a); 
}

void b(int& a) {
    std::cout << "Int a=" << a << std::endl;
}

也请注意, a作为函数的自变量b是不一样的a在功能main 最后一个提示是函数的每个参数在函数作用域内都是已知的,因为它是在函数作用域内声明的!

#include <iostream>

using namespace std;

void displayValue(int number) {
    cout<<"Number is = "<<number;
}

int main()
{
    int myValue = 77;
    displayValue(myValue);

    return 0;
}

使用按引用传递来访问在另一个函数中声明的变量。 参考以下代码了解引用变量的使用,

void swapNums(int &x, int &y) {
  int z = x;
  x = y;
  y = z;
}

int main() {
  int firstNum = 10;
  int secondNum = 20;

  cout << "Before swap: " << "\n";
  cout << firstNum << secondNum << "\n";

  // Call the function, which will change the values of firstNum and secondNum
  swapNums(firstNum, secondNum);

  cout << "After swap: " << "\n";
  cout << firstNum << secondNum << "\n";

  return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM