我正在制作一个统计代码控制台应用程序,C ++ visual studio 2013。
据我所知,我设置了全局int
x,我有一些void
组成,问题是我不确定如何设置新的全局int
在void
内,并重用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;
}
我认为这是简化版
答案 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。