코드 범위와 네임스페이스
- 범위 표시
중괄호 {} 이용
함수 main() 블록
반복문 블록
범위 내에 선언한 변수는 범위 내에서만 인식된다.
#include <iostream>
using namespace std;
int main()
{
int a = 100;
cout << "main( ) 범위입니다. " << endl;
for (int i = 1; i < 3; i++)
{
int a = 200; // main 함수의 int a 와는 다른 메모리이다.
cout << "반복문 for의 범위입니다. " << endl;
cout << "i= " << i << endl;
cout << “a = “ << a << endl; //에러없음!!!
}
cout << "반복문 for를 마친 후 a의 값은 : " << a << endl; // main 함수의 a이다.
cout << "반복문 for를 마친 후 i의 값은 : " << i << endl; //에러
cout << "프로그램을 종료합니다." << endl;
return 0;
}
네임스페이스1
간단하게 위의 소스코드에서 main 함수의 a를 for문 내에서 사용하고 싶다면?
네임스페이스를 사용하면된다.
- 네임스페이스 : 범위의 이름 영역
- 다른 범위의 멤버를 참조할 경우 해당 범위의 이름을 이용한 소속을 알려야 함!!!
- 네임스페이스 정의
namespace 이름
{
프로그램 내용~~~
}
- 다른 네임스페이스 멤버 참조 : 이름::멤버
아래 예제를 통해 쉽게 이해 가능하다.
#include <iostream>
using namespace std;
namespace NS_1 { // 네임스페이스 생성 방법
int a=200;
}
int main()
{
int a=100;
cout << "main() 범위 입니다. " << endl;
for (int i=1; i<3; i++)
{
cout << "반복문 for의 범위입니다. " << endl;
cout << "i= " << i << endl;
cout << "namespace NS_1의 a=" << NS_1::a << endl; // 네임스페이스 내의 변수 사용 방법
cout << "a=" << a << endl;
}
cout << "namespace NS_1의 a=" << NS_1::a << endl;
cout << "a=" << a << endl;
cout << "프로그램을 종료합니다." << endl;
return 0;
}
네임스페이스2
정의된 네임스페이스의 멤버 사용이 빈번한 경우 네임스페이스 이름 생략하고 사용하려면 using 으로 표기하기
using namespace [네임스페이스이름];
#include <iostream>
using namespace std;
int main()
{
cout << “즐거운 수업!!! << endl;
return 0;
}
#include <iostream>
//using namespace std;
int main()
{
std::cout << “즐거운 수업!!! << std::endl;
return 0;
}
두번째 소스처럼 네임스페이스를 생성하고
해당되는 변수룰 ::와 함께 불러올수 있지만
첫번째 소스처럼 네임스페이스를 생성하고
using namespace 이름; 을 작성해놓으면
굳이 :: 없이 변수를 사용하면 알아서 사용한다고 말한 네임스페이스에서 변수를 찾는다.
'C > [언어본색] C 기초' 카테고리의 다른 글
[언어 본색] #17 4장 - 포인터 변수 (2) (0) | 2021.10.01 |
---|---|
[언어 본색] #16 4장 - 포인터 변수 (1) (0) | 2021.10.01 |
[언어 본색] #10 2장 - 논리형 (2) (0) | 2021.09.30 |
[언어 본색] #09 2장 - 논리형 (1) (0) | 2021.09.30 |
[언어 본색] #08 2장 - 형변환 (0) | 2021.09.30 |