2017-09-18 6 views
-4

우리가 전역 변수를 정의하면 int x; 이고 함수 본문 내부에는 다른 변수 int x;이 정의됩니다.함수 본문 내부의 로컬 변수와 동일한 이름을 가진 전역 변수를 어떻게 참조 할 수 있습니까?

함수 'x'는 항상 로컬 변수 'x'를 참조합니다. 이제 사용자가 함수 내에서 전역 변수 x를 참조해야한다면 어떻게 달성 할 수 있습니까?

+0

왜 C 및 Python으로 태그가 지정되어 있습니까? –

+0

C에서는 할 수 없습니다. 기호를 숨기면 액세스 할 수 없습니다. –

+0

왜 변수와 동일한 이름이 필요합니까? –

답변

2

귀하의 질문에 "C"라고 쓰여 있으므로 해당 언어에 대해 답변 해 드리겠습니다. 다른 언어는 구문 당 (syntactic sugar)이나 원하는 것을 수행하기위한 메커니즘을 제공 할 수 있습니다. 더 큰 범위에 존재하는 변수의 이름을 사용하여 변수를 정의

는 그림자 라고 : 내측 정의 그림자 외측 하나. 다음은

이 예는 다음과 같습니다 C에서

int x = 42; 

int main() { 
    int x = 0; // Here, `x` shadows the global `x`. 
    printf("%d\n", x); // Prints '0' 
} 

의 그림자 변수의 값을 볼 수있는 방법이 없습니다.

스타일 계획에서 섀도 잉은 코드를 쉽게 읽을 수없고 리팩토링하기가 어렵 기 때문에 종종 나쁜 습관으로 간주됩니다.

+0

맞음. "내가 아는 한"을 "In C"로 변경하십시오. C에서 그림자가있는 변수에 도달 할 방법이 없기 때문입니다. –

+0

확인해 주셔서 감사합니다. :) – RichouHunter