변수
변수가 뭘까
- 변수는 이름에서 알 수 있듯이
변할 수 있는 값
이다. 수학에서도 자주 사용되는 개념이며, 원하는 데이터를 보관하는 상자
의 개념이 된다. 이 상자의 타입을 미리 지정한다면 내가 원하는 형식의 물체를 미리 담아뒀다가 사용할 수 있고, 미리 담아뒀던 물체를 제거하고 새로운 물체를 담아놓을 수 있는 것이다. 프로그래밍에서는 변수에 담아두는 물체가 데이터이며, 아래의 그림을 통해 쉽게 이해할 수 있다.
- 각 상자에 들어가는 요소들의 기준을 정해 놓고 상자에 보관할 수 있다. 프로그래밍에서는 단순 정수, 실수 형태의 숫자부터 후에 배울 클래스, 즉 객체를 담아놓거나 어떤 데이터가 존재하는 메모리의 위치를 보관하기 위해 사용하기도 한다.
어떻게 사용할까
- 변수는 핵심적으로
데이터타입
과 변수명
을 사용해 선언하며 선언과 동시에 값을 할당하는 초기화
도 병행할 수 있다. 간단한 테스트를 통해 알아보자.
// C++ 언어 예시
#include <iostream>
int main()
{
// 정수 형식의 데이터를 담아두는 변수
// 데이터가 할당되지 않았기 때문에 빈 상자와 같다
int integerNumber;
// 실수 형식의 데이터를 담아두는 변수
// 데이터를 할당(초기화)했기 때문에 상자에는 '0.5' 라는 데이터가 보관되어 있다.
float realNumber = 0.5f;
// 콘솔 창에 'realNumber' 변수에 보관되어 있는 값을 출력한다
std::cout << realNumber;
}
- 결과 :
- 위의 테스트의 결과로는 ‘realNumber’라는 변수의 값을 출력하는 코드이기 때문에, 정확하게 해당 변수가 보관중인 데이터를 출력했다. 대체 어디에 저장되어 있길래 가능한 일 일까?
변수는 어디에 어떻게 저장되길래 ‘보관’할 수 있는가?
- 변수를 선언하면 메모리에는 원하는 자료형식의 데이터를 보관하기 위한 공간이 부여된다. 즉, 메모리의 주소를 통해 해당 데이터에 접근할 수 있다는 뜻이다. 변수를 선언했을 때 메모리에 실제로 할당되는지 간단한 테스트를 통해 확인할 수 있다.
- 예시 코드에서 보이는
&
는 참조자(Reference)
로 불리는 개념이며, 참조자에 대한 포스팅은 추후 업로드 예정이다.
// C++ 언어 예시
#include <iostream>
int main()
{
// 정수 형식의 데이터를 담아두는 변수
int number;
// 콘솔 창에 &number, 즉 number 변수의 메모리 주소값을 출력한다.
std::cout << &number;
}
- 결과 :
- 메모리 공간 중에서 0000008271AFFB34 라는 주소를 호출했다. 이로서 알 수 있는 것은 변수를 선언하는 순간 어디일지는 프로그램 실행 전엔 알 수 없지만, 분명 주소를 가진 메모리 공간에 변수 데이터 저장을 위한 공간이 할당되었음을 알 수 있다.
어떻게 사용하면 잘 사용할 수 있을까?
- 위의 내용을 이해했다면 변수를 왜 사용해야 하는지 알 수 있을 것이다. 변수를 사용하는 이유와 다음는 다음과 같다.
변수 사용 이유
- 재사용성 :
- 코드 내에서 같은 값을 여러 번 사용할 수 있기 때문에 불필요한 코드의 양을 줄일 수 있다.
- 코드의 가독성과 유지보수 :
- 적절한 변수명을 사용해 코드의 의도를 더 명확하게 이해할 수 있다.
- 값만이 존재하는 데이터에 ‘이름’을 부여함으로서, 긴 기간이 지난 후 코드를 다시 보게 되거나 타인이 코드를 봤을 때, 변수의 이름을 보고 해당 데이터의 사용 의도를 정확하게 파악할 수 있다.
사용시의 주의점
- 명확성 :
- 변수 이름은 해당 변수의 용도를 명확하게 표현할 수 있어야 한다. 예를들어
int s;
보다는 int moveSpeed;
와 같이 상세하게 이름을 사용하는 것이 좋다는 뜻이다.
프로그래머는 이름을 지을 때 가장 많은 시간을 소모한다는 전설의 밈도 있다
- 범위 :
- 변수가 사용될 수 있는 범위에 주의해야 한다.
- 어디에서 정의되고 어디까지 사용될 수 있는지에 따라 적절히 사용할 수 있어야 한다.
- 불변성 :
- 값이 변경될 일이 없거나, 변경되어서는 안되는 경우
상수
로 선언하거나, 값을 외부에서 변경할 수 없도록 보호
해야 한다.
- 해당 내용은 추후 포스팅에서 다뤄질 내용이다.
댓글 남기기