프로그램 언어에서 기본적으로 알아가는 것이 변수 선언과 변수 초기화 방법입니다.
C++에서 변수 선언과 초기화 방법을 어떻게 하는지 알아보겠습니다.
변수 선언
C언어에서는 변수 선언을 블럭의 시작 부분에 미리 작성해야 합니다.
하지만 C++에서는 C언어처럼 블럭 시작 부분에 미리 작성하지 않아도 됩니다.
C++에서는 어떠한 처리를 시작하기 전에 변수를 선언해 사용할 수 있습니다.
C#이나 PHP, 자바 등의 언어와 같다고 보면 됩니다.
그리고 C++에서는 반복문인 for문 초기화 부분에서도 변수를 선언할 수 있습니다.
단, for문 초기화 부분에서 선언한 변수는 for문 안에서만 사용 가능합니다.
#include <iostream>
int main(int argc, char **argv)
{
int a, b; // 변수 선언
std::cin >> a >> b;
int sum = a + b; // 처리와 동시에 변수 선언
std::cout << sum << std::endl;
for (int i = 0; i < argc; ++i) // for문 초기화부분에서 변수 선언
std::cout << argv[i] << std::endl;
return 0;
}
변수 초기화
다른 프로그래밍 언어와는 다르게 C++에서는 변수를 자동으로 초기화하지 않습니다.
변수가 컴파일러에 의해 메모리 위치가 할당되면,
그 변수의 기본값은 메모리에 쓰레기 값(garbage value)으로 할당됩니다.
선언한 변수를 초기화 또는 값을 대입하지 않으면 잘못된 결과가 발생할 수 있습니다.
#include <iostream>
int main(int argc, char **argv) {
// 정수 변수 x를 선언.
// 선언한 변수 x는 초기화되지 않은 변수.
int x;
// 정수 변수 x의 값을 출력.
// 초기화되지 않았기 때문에 쓰레기 값을 출력.
std::cout << x;
return 0;
}
결과
warning C4700: uninitialized local variable 'x' used
네이스페이스 (namespace)
네이스페이스는 이름 충동을 방지하기 위해 사용합니다.
네이스페이스에 math를 정의한 샘플입니다.
#include <iostream>
namespace math
{
double pi = 3.14159; // 네임스페이스 안에서 선언
}
double pi = 3.14; // 전역 변수
int main()
{
double pi = 3; // 지역 변수
std::cout << math::pi << std::endl; // 3.14159 네임스페이스에 대입
std::cout << ::pi << std::endl; // 3.14 전역 변수에 대입
std::cout << pi << std::endl; // 3 지역 변수에 대입
return 0;
}
네임스페이스 math에 있는 변수 등에 접근하기 위해서는 스코프 연산자 :: 를 사용합니다.
pi변수에 접근하기 위해 math::pi라고 작성합니다.
만약 스코프 연산자인 :: 앞에 네임스페이스를 지정하지 않으면 전역 변수에 값이 대입됩니다.
using 선언
C++의 네임스페이스를 간편하게 사용할 수 있도록 도와주는 것이 using입니다.
using은 선언 또는 지시자 역할을 합니다.
using 선언 샘플을 보겠습니다.
#include <iostream>
int main()
{
using std::cout; // using 선언
cout << "hello, world" << std::endl;
return 0;
}
제한된 이름 앞에 using을 붙여주면 됩니다.
using 선언을 하게 되면 ::연산자로 접근을 하지 않아도 접근이 가능하게 됩니다.
using 지시자 역할을 하는 샘플을 보겠습니다.
#include <iostream>
int main()
{
using namespace std; // using 지시자
cout << "hello, world" << endl;
return 0;
}
결과
hello, world
지시자는 해당 네임스페이스의 모든 이름을 ::연산자 없이 사용할 수 있습니다.
댓글