글쎄, 당신은 범위 규칙에 대해 알아야 합니다 - {... }사용한 "범위"의 개념 이해
지역 변수
샘플 코드에서 생성된 출력을 관찰합니다. 주요 차이점이 명확해야 합니다. 이들은 모두 {...} 범위 내의 "로컬" 변수입니다.
int main( ) { int X = 10, Y = 15; { 정수 X = 20; { int X = 30, Y = 35; Brain.Screen.printAt(4,30, "세 번째 것: %d, %d ", X, Y); } Brain.Screen.printAt(4, 60, "두 번째 것: %d, %d", X, Y); } Brain.Screen.printAt(4, 90, "첫 번째 것: %d, %d", X, Y); 0을 반환합니다. }
산출:
세 번째 것: 30, 35 두 번째 것: 20, 15 첫 번째 것: 10, 15
위의 예는 빠르고 쉽게 설명하기 위해 사용되었습니다. 중첩된 범위 내에서 동일한 수직 변수를 사용하지 마십시오.
“main( )” 블록 외부에 변수를 넣는 것은 어떻습니까?
전역 변수
변수를 main( )
블록 외부에 배치하고 다른 함수 내에 배치하지 않으면 프로젝트의 모든 함수에서 전역적으로 변수를 사용할 수 있게 됩니다. 이를 전역 변수라고 합니다.
int gValue = 90000; // 이는 다른 모든 범위에 전역적입니다 int main() { Brain.Screen.setFont(fontType::mono30); 정수 X = 10; { int X = 20, gValue = 8000; { int X = 30, gValue= 700; Brain.Screen.printAt(4, 30, " 세 번째 것: %d ", gValue + X); } Brain.Screen.printAt(4, 60, " 두 번째 것: %d ", gValue + X); } Brain.Screen.printAt(4, 90, " 첫 번째 것: %d ", gValue + X); }
산출:
세 번째 것: 730 두 번째 것: 8020 첫 번째 것: 90010
가장 좋은 방법은 전역 변수와 지역 변수 모두에 동일한 식별자 이름을 사용하지 않는 것입니다.
주의: 내가 "파일"이 아니라 "프로젝트"라고 언급했다는 점에 유의하십시오. 프로젝트는 두 개 이상의 파일로 구성될 수 있습니다. 그러나 단일 프로젝트 내에서는 main( )
함수를 두 개 이상 가질 수 없습니다. 이는 이 기사의 범위를 벗어납니다. 전역 변수와 관련하여 "extern"을 사용하는 것과 같은 몇 가지 추가 규칙이 있습니다. 이에 대해서는 VEX Library내의 단일 프로젝트 내의 여러 파일에 관한 다른 섹션에서 자세히 설명합니다.
"네임스페이스 vex"란 무엇입니까?
네임스페이스는 변수가 아니기 때문에 그 자체로 "로컬" 변수와 "전역" 변수에 대한 논의에 반드시 포함되는 것은 아닙니다. 그러나 "namespace vex"는 에 자체 범위포함합니다. 이는 모든 V5 프로그램에 포함해야 하는 템플릿 코드 베이스의 일부이므로 이 기사에서는 네임스페이스에 대한 범위 규칙을 간략하게 다루어야 합니다.
각 네임스페이스는 해당 개별 "공간"과 관련된 일련의 변수, 함수를 생성할 수 있는 공간과 같습니다. 이 "공간" 내에 정의된 사용 가능한 모든 변수, 함수, 클래스 등에 액세스할 수 있습니다.
https://api.vexcode.cloud/v5/html/ 에서 온라인네임스페이스를 찾아볼 수 있습니다. 빠른 조회를 위해 "vex"를 마우스 오른쪽 버튼으로 클릭한 다음 "정의로 이동"을 클릭할 수도 있습니다. “vex” 네임스페이스에서 사용할 수 있는 내용에 대한 풍부한 정보를 찾을 수 있습니다.
다음을 수행하여 이들 중 하나에 액세스할 수 있습니다: vex::
예를 들어 템플릿 코드를 다시 참조하세요.
네임스페이스 vex 사용; vex::뇌뇌;
또한 이 "vex" 공간 내에 선언된 변수, 함수 등을 포함한 모든 이름은 프로그램의 다른 "공간"과 충돌하지 않습니다.
예를 들어 "myOwnNamespace"를 만들고 변수 제목을 "Brain"으로 지정할 수 있습니다. 그러한 작업을 수행하는 것은 권장되지 않지만 프로그램에서는 이를 허용합니다. 이는 "myOwnNamespace" 내에 정의되어 있기 때문입니다.