2013-11-23 106 views
2

您好我想知道如何引用變量「X」(主函數)的塊內:參考變量外塊範圍,但內部功能範圍(C/C++)

#include <stdio.h> 
int x=10; // Global variable x ---> let it be named x1. 

int main() 
{ 
    int x=5;  // main variable x with function scope ---> let it be named x2. 
    for(x=0;x<5;x++) 
    { 
    int x=2;  // variable x with block scope ---> let it be named x3. 
    printf("%d\n",x); // refers to x3 
    printf("%d\n",::x); // refers to x1 
    // What is the syntax to refer to x2??? how should I try to access x2? 
    } 
} 

回答

-5

x2和是一樣的。 for塊不是範圍。當編譯器看到這一點:

int x = 5; 

for(x = 0; x < 5; x++) { 
    int x = 2; 
} 

...它實際上看到的是:

int x; 
x = 5; 

for(x = 0; x < 5; x++) { 
    x = 2; 
} 
+1

我們在談論C和C++,而不是JavaScript。這是錯誤的。 – 2013-11-23 18:00:53

+2

這個答案是明確的,危險的,錯誤的。 – poundifdef

2
  1. 對於C

    你不能訪問X1在main.Local變量有超過全局變量更高的優先級。 x的主要功能,即x2可以在for塊之外或之前訪問。

  2. 對於C++

    C++有命名空間的特徵,通過該U可以組特定的類/ variables..etc成範圍。

因此,將第一個x1和x2包含在嵌套命名空間中(甚至可以不用它)。

e.g. namespace a { public : int x; namespace b { public : int x; } } 

    Then to use x1, a::x and to use x2 write a::b:: x;