◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
변수는 선언한 위치에 따라서 접근할 수 있는 범위가 정해지게 된다.
이 규칙을 정확하게 이해야만 코드를 어디에/어떻게 작성해야 하는지를 알게 되고, 이를 통해 전체 프로세스의 흐름을 이해할 수 있다.
그러므로 이는 꼭 알아야만 하는 필수 요소라고 할 수 있다.
이 규칙을 정확하게 이해야만 코드를 어디에/어떻게 작성해야 하는지를 알게 되고, 이를 통해 전체 프로세스의 흐름을 이해할 수 있다.
그러므로 이는 꼭 알아야만 하는 필수 요소라고 할 수 있다.
#includeusing namespace std; int global = 16; int global_copy = global; namespace MyNameSpace { int global = 1024; // namespace에 의한 이름중복 허용. } void main( ) { // 규칙1 : 변수는 중괄호를 벗어나는 순간 소멸한다.(특별한 경우 제외.) // 규칙2 : 상위 스코프의 변수에만 접근이 가능. // 규칙3 : 자신보다 먼저 선언된 변수에만 접근이 가능. // 규칙4 : 같은 영역에서는 중복된 이름의 변수를 생성할 수 없다. // 규칙5 : 이름이 중복될 경우, 가장 가까운 영역의 변수에 접근한다. // 변수 접근시 생명, 시야를 살펴봐야 한다. // - 변수가 소멸하면 접근 불가능. // - 변수가 보이지 않으면 접근 불가능. // - 즉, 변수에 접근하기 위해서는 해당 변수가 살아있고 보이는 위치에 있어야만 한다. // main함수의 지역변수는 전역변수에 가까운 라이프사이클을 가진다. // 파일규칙1 : 전역변수는 파일에 종속적이지 않다. // 파일규칙2 : 파일에 종속적인 전역변수를 만들기 위해서는 static 또는 이름없는 namespace를 사용해야 한다. // 파일규칙3 : 헤더파일에는 전역변수 생성코드를 넣어서는 안된다.(#include를 수행한만큼 변수가 중복 생성되기 때문) // 파일규칙4 : 다른 파일의 전역변수에 접근하기 위해서는 extern을 사용해야 한다. int local1; local1 = 100; cout << local1 << endl; { int local2; local2 = 200; cout << local1 << endl; // 1. 변수가 아직 살아있으므로 가능. 2. 시야가 내부->외부이므로 가능. } // cout << local2 << endl; // 1. 변수가 이미 소멸했으므로 불가능. 2. 시야가 외부->내부이므로 불가능. // 내부->외부 global = 512; cout << global << endl; // 같은 이름일 경우, int global = 128; cout << global << endl; // 지역변수 global이 출력. cout << ::global << endl; // 전역변수 global이 출력. cout << MyNameSpace::global << endl; // MyNameSpace에 있는 global이 출력. //=================================================== // 반복문에서의 변수 스코프. //=================================================== // 2단 출력. int num=1; while(num<=9) { cout << "2 X " << num << " = " << 2*num << endl; num++; } cout << endl; // 3단 출력. num=1; // 같은 영역이므로 중복 생성 불가. while(num<=9) { cout << "3 X " << num << " = " << 3*num << endl; num++; } cout << endl; // 4단 출력. for(int num=1; num<=9; num++) { cout << "4 X " << num << " = " << 4*num << endl; } cout << endl; // 5단 출력. { int num=1; for(; num<=9; ) { cout << "5 X " << num << " = " << 5*num << endl; num++; } } }