이번 포스팅에서는 여러 프로그래밍 언어의 기초가 되는 자료형과 변수에 대해 설명하고자 한다.
자료형에 대해 설명하기 이전에 우리는 컴퓨터의 메모리(Ram)구조에 대해 간략하게 알고 넘어갈 필요가 있다.
위 사진은 검은 테두리 부분이 메모리 전체를 뜻하고 각각 1바이트 단위로 주소가 매겨져 있다는 것을 설명하기 위한 것이다. 1바이트는 8비트와 같으며 비트란 컴퓨터 메모리를 구성하는 최소한의 단위로 1bit 당 0,1 두가지를 표현할 수 있다.
다시 말해, 저 사진에 주소가 적혀있는 네모 한칸을 다시 8칸의 비트로 쪼갤 수 있다는 뜻이다.
자 그럼 본격적으로 자료형에 대해 정의해보겠다. 자료형이란 "사용자(프로그래머)가 컴퓨터 메모리를 얼마나 사용할 것인지 명시하는 것" 을 의미한다.
그리고 우리는 이 자료형을 변수를 선언할 때 반드시 명시하여 해당 메모리공간을 자료형의 크기만큼 가져오고 그 공간의
이름을 변수명으로 정해둠으로서 필요할때마다 참조하여 사용할 수 있게되는 것이다.
아래 코드를 살펴보자
#include <iostream>
// std 이름공간 선언
using namespace std;
int main()
{
// 자료형의 종류
// char(1byte), int(4byte), float(4byte), short(2byte), double(8byte)..
// 문자형 정수형 실수형 정수형 실수형
//변수의 선언과 정의
// 변수 선언
int num;
// 변수 정의
num = 10;
// cout 출력
cout << num << endl;
num = 20;
cout << num << endl;
}
맨 위의 std 이름공간은 나중에 다루도록 하고 main 함수에 주목해보자. int num; 으로 4바이트 크기에 해당하는 공간을 받아서 num 이란 변수명으로 명시하고있다.
그 다음 num = 10; 이라 씀으로서 num 이란 공간에 10이란 값을 할당하는 모습이다. 이런 과정을 변수의 '초기화' 라고도 한다.
그런데, 그 다음에 num = 20; 이란 코드가 한번 더 쓰여있다. 이렇게 되면 기존에 담겨있던 10이라는 데이터는 20이란 데이터로 덮어씌워지게 된다. 따라서 위 코드의 출력 결과는 10과 20이 나오게 된다.
위에 변수를 선언하고 정의하는 과정을 한 줄로 int num = 10; 이라 표현하는 것 또한 가능하다.
<R-value, L-value>
L-value : 해당 코드라인을 벗어나더라도 계속해서 참조가 가능한 값을 의미한다. 위 코드에서는 num 이 그 예시이다.
R-value: 해당 코드라인을 벗어나면 더이상 참조가 불가능한 값을 의미한다. 위 코드에서는 10, 20이 그 예시이다.
<컴퓨터가 10, 20(R-value)을 어떻게 기억하는가?>
사실 10, 20 또한 그냥 해당 메모리 공간에 넣을 수 있는 것이 아니다. 10, 20이란 값 또한 컴퓨터의 기억장치에 저장 되어 있어야만 그 값을 불러 넣을 수 있는 것이다.
그렇다면 의아할 수 있다. 우린 10, 20을 담을 변수를 만들지조차 않았다.
하지만, 우리가 컴파일할 당시 10과 20이란 값을 컴퓨터가 스스로 임시변수라는 것을 만들어 넣어두고 우리가 선언했던 변수에 그 임시변수에 담긴 10과 20을 넣어주게된다. 10, 20 을 담기위해 만들어둔 임시변수는 해당 코드라인을 벗어나면 자동으로 해제된다.
'C & C++' 카테고리의 다른 글
C++ <가상 함수의 동작 원리> (0) | 2024.01.31 |
---|