【问题标题】:How to declare global variable inside function?如何在函数内部声明全局变量?
【发布时间】:2014-01-17 19:17:20
【问题描述】:

我在函数内创建全局变量时遇到问题,这是一个简单的例子:

int main{
   int global_variable;  //how to make that
}

这正是我想做的:

int global_variable;
int main{
                   // but I wish to initialize global variable in main function
}

【问题讨论】:

  • 循环?我认为您的意思是函数。这些是非常不同的东西。
  • 你仍然可以在 main 之外做 int global_variable,然后设置 global_variable = something;在主里面。
  • 我认为您正在尝试在 C++ 中利用不同的语言行为和风格。我建议快速浏览一下 Bjarne Stroustrup 的书“C++”。
  • 一旦你在一个函数中声明了你的变量,根据定义,它就被认为是本地的。这没有任何意义。
  • @cen 你不是说“只要你声明”在函数中初始化全局就好了。

标签: c++ variables loops global main


【解决方案1】:

你有两个问题:

  1. main 不是循环。这是一个函数。

  2. 您的函数语法错误。您需要在函数名称后加上括号。这些都是main 的有效语法:

    int main() {
    }
    
    int main(int argv, const char* argv[]) {
    }
    

然后,您可以在main 中声明一个局部变量,如下所示:

int main() {
  int local_variable = 0;
}

或像这样分配给全局变量:

int global_variable;

int main() {
  global_variable = 0;
}

【讨论】:

  • 但是我可以在 main 中初始化全局变量吗?
  • @user3137147 否。根据定义,全局变量在全局命名空间中声明(并且可能已初始化)。
  • @sftrabbit 也许我搞混了,但你的最后一个例子不是在 main 中初始化你的 global_variable 吗?还是不考虑初始化?
  • @Jordan 初始化是指您在对象一出现就为其赋予值。如果= 0; 已经在变量声明中,它就会被初始化。还有其他初始化变量的方法(构造函数初始化列表、函数参数等)。
  • @Jordan global_variable is 在该示例中被初始化为值 0,但不是因为分配。具有静态存储持续时间的对象(如global_variable)会自动进行零初始化。所以真的,main 中的那行是不必要的。
【解决方案2】:

没有办法以你想要的方式声明。就是这样。

但是:

  • 首先,如果您愿意,可以在main 正文之前声明它,但在main 内为其赋值。看看保罗的回答
  • 其次,实际上以您想要的方式声明变量并没有什么好处。它们是 global 的,这意味着它们应该在 global 范围内声明,而不能在其他地方声明。

【讨论】:

    【解决方案3】:
    int global_variable;
    int main()
    {
                   global_variable=3; // look you assigned your value.
    }
    

    【讨论】:

    • -1。因为没有括号并调用赋值初始化。
    • @JosephMansfield 糟糕,已修复。 3年后哈哈。
    【解决方案4】:

    嗯... 通过将指针声明为全局指针,然后将局部变量分配给它们,可以间接实现,但有时可能会导致指针变量无法访问的情况。

    【讨论】:

    • 只是把对象的内存地址放到指针中;'无效 *x,*y,*z; int main(){ char localx[500]="hello eorld from local"; x=&localx; }' ;可能会同时完成任务;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    相关资源
    最近更新 更多