【发布时间】:2014-03-14 03:54:55
【问题描述】:
所以我翻阅了几本旧的 C++ 测试书籍,发现其中一个问题的解决方案非常酷!我以前从未见过这种“语法”,想问是否有人知道它实际上是如何工作的,以及为什么它没有被广泛教授!
问题: 将输出交给以下代码 ->
int g =10; //TAKE NOTE OF THIS VARIABLE
void func(int &x, int y){
x = x-y;
y = x*10;
cout << x << ',' << y << "\n";
}
void main(int argc, char** argv){
int g = 7; //Another NOTE
func(::g,g); // <----- "::g" is different from "g"
cout << g << ',' << ::g << "\n";
func(g,::g);
cout << g << ',' << ::g << "\n";
}
输出:
3,30
7,3
4,30
4,3
我的问题是“::(variable)”语法是如何工作的?它获取存储在主外部的变量,但是该内存存储在哪里(堆栈/堆)?我们可以通过指针改变那个“全局”变量的值吗?
我认为这可能允许一些非常酷的实现,并希望与像我一样不知道这一点的人分享这些知识:)
【问题讨论】:
-
全局变量不受欢迎,因为您无法为它们建立不变量(每个人都可以访问它们),并且您需要唯一的名称。
::称为作用域解析运算符,它通常用于访问命名空间(如全局命名空间)。 -
这就像在
std命名空间中使用std::cout访问cout。
标签: c++ variables syntax global