如何在C ++中的void中设置全局int?

时间:2015-06-21 04:27:16

标签: c++ visual-studio-2013

我正在制作一个统计代码控制台应用程序,C ++ visual studio 2013。

据我所知,我设置了全局int x,我有一些void组成,问题是我不确定如何设置新的全局intvoid内,并重用int内的int main(已更新)。

请帮忙。

#include < iostream>
using namespace std;
int x = 0;
void change(int x);
void change2(int x);
int main ()
{
change;
system("PAUSE");
change2;
return(0);
}
void change(int x)
{
x = 5;
 cout << x << endl;
}
void change2(int x)
{
x = (5 + 1);
 cout << x << endl;
}

我认为这是简化版

3 个答案:

答案 0 :(得分:0)

您的参数int x隐藏了全局变量int x,这就是函数不会更改全局变量的原因。

您可以通过为每个声明的变量使用不同的名称来轻松避免此问题。

答案 1 :(得分:0)

好的,让我们来看看你的代码......

#include <iostream>

using namespace std;
int x = 0;              // a global variable.

void change(int x);     // declares a function taking an int, returning void
void change2(int x);    // declares another function with same signature

int main ()
{
  change;               // declare a reference to function change()
                        // no function call: statement has no effect
  system("PAUSE");
  change2;              // declare a reference to function change2()
                        // no function call: statement has no effect
  return(0);
}

void change(int x)      // defines a previously declared function 
{                       // argument x is passed by copy
  x = 5;                // sets local variable x to 5
  cout << x << endl;    // global variable x is not affected
}
void change2(int x)     // defines another previously declared function
{                       // argument x is passed by copy
  x = (5 + 1);          // sets local variable x to 5+1
  cout << x << endl;    // global variable x is not affected
}

如果要更改全局变量x,则不能使用局部变量隐藏它(或显式更改全局变量):

int x;                  // global variable
void change_x_to(int i)
{
  x=i;                  // assigns local variable i to global variable x
}

void change2_x_to(int x)
{
  ::x=x;                // assigns local variable x to global variable x
}

int main ()
{
  change_x_to(5);
  change2_x_to(x+1);   // the global x (of course)
  assert(x==6);
}                      // return 0; is automatically created for main()

答案 2 :(得分:-2)

范围是程序的一个区域,从广义上讲,有三个地方可以声明变量:

在函数或块中称为局部变量

在所有被称为全局变量的函数之外。

您不能在本地块中声明全局变量,但是您可以使用静态全局块来保存变量的最后修改值。

#include "example.h"


 int global_foo = 0;
 static int local_foo = 0;


 int foo_function()
 {
 /* sees: global_foo and local_foo
  cannot see: local_bar  */
  return 0;
 }

即使他的方法也不是一个好的编程实践,如果要在多个.c文件中使用全局变量,则不应将其声明为静态。相反,你应该在所有需要它的.c文件所包含的头文件中声明它为extern。

Refer this for further details.