수색…


간단한 블록 범위

블록 { ... } 에있는 변수의 범위는 선언 후에 시작하고 블록의 끝에서 끝납니다. 중첩 된 블록이있는 경우 내부 블록은 외부 블록에 선언 된 변수의 범위를 숨길 수 있습니다.

{
    int x = 100;
    //   ^
    //   Scope of `x` begins here
    //
}   // <- Scope of `x` ends here

중첩 된 블록이 외부 블록 내에서 시작되면 외부 클래스에서 이전과 동일한 이름을 가진 새로운 선언 된 변수가 첫 번째 블록을 숨 깁니다.

{
    int x = 100;

    {
        int x = 200;

        std::cout << x;  // <- Output is 200
    }

    std::cout << x;  // <- Output is 100
}

전역 변수

다른 소스 파일에서 액세스 할 수있는 변수의 단일 인스턴스를 선언하려면 키워드 extern 을 사용하여 전역 범위에서 변수를 만들 수 있습니다. 이 키워드는 컴파일러에서 코드의 어딘가에이 변수에 대한 정의가 있으므로 어디에서나 사용할 수 있으므로 모든 쓰기 / 읽기가 메모리의 한 위치에서 수행된다는 것을 알려줍니다.

// File my_globals.h:

#ifndef __MY_GLOBALS_H__
#define __MY_GLOBALS_H__

extern int circle_radius; // Promise to the compiler that circle_radius 
                          // will be defined somewhere

#endif

// File foo1.cpp:

#include "my_globals.h"

int circle_radius = 123; // Defining the extern variable

// File main.cpp:

#include "my_globals.h"
#include <iostream>

int main()
{
    std::cout << "The radius is: " << circle_radius << "\n";'
    return 0;
}

산출:

The radius is: 123


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow