본문 바로가기

함께 알아가는 C++

C++ 첫번째 이야기, 자료형

728x90
반응형

안녕하세요, WH에요.

비전공자가 개발자가 되었답니다.

물론 자바나 고와 같은 언어를 쓰지는 않아요.

부서 특성상 c와 c++을 쓰고 있어요.

여러 할 이야기가 있지만, 처음에는 자료형에 대해 다뤄볼까 합니다.

차근차근 하나씩 알아가봅시다.

 

 

자료형이 뭘까요?

왜 처음 다루는 이야기로 자료형을 가져왔을까요?

자료형에 대한 이해가 모든 개념 이해의 시작이기에 가져왔습니다.

 

대답해볼까요? 자료형이 뭐죠?

" 자료형은 데이터를 표현하기 위한 공간과 그에 대한 표현 방식입니다. "

이 정도로 표현할 수 있을까요?

 

단순이 실수형이다, 정수형이다, 문자형이다.. 이정도의 의미가 아닙니다.

매우 중요한 부분은

공간

그리고

표현방식

두 가지 키워드 입니다.

 

#include <iostream>

int main(void)
{
int a = 0;
double b = 0;
retrun 0;
}

 

이게 그렇게 중요해? 그냥 정수형 변수 a 에 0 실수형 변수 b에 0을 초기화 한거 아니야?

맞아요 그게 다입니다. 근데 그 내용을 정확히 인지하고 있는지 확인해 볼까요?

 

a, b는 어디에 어떻게 저장되는거에요?

a, b에 0은 어떻게 대입되는 거죠?

0은 어디에 있길래 a와 b에 대입이 되는 걸까요?

( 참고로 문자형은 문자 저장을 위한 자료형이지만 실제로는 숫자( 정수 )가 저장됩니다.

다만 기본 연산을 할 이유가 없기에, 공간의 효율을 위해 작은 공간에 저장할 뿐이지요. )

 

 

 

int 라는 자료형은 다음을 뜻합니다.

" 메모리 공간에 정수형 자료를 저장할 공간 만큼을 만들어주세요 "

 

그 공간은 디바이스가 가지고 있는 메모리 공간 중 일부를 뜻합니다. 

메모리 공간에 자료를 저장할 만큼의 공간을 만드는 과정을 할당이라고 합니다.

만든다기보다는 빌려준다고 말할까요? 컴퓨터가 주소가 부여된 공간을 빌려주는 겁니다!

( 주소가 부여된 이유는 간단합니다. 빌려준 공간을 알아봐야되잖아요 ) 

 

그런데 컴퓨터는 저 공간을 주소로 알아본다고 합시다. 근데 그 주소가 복잡하단말이죠?

사람이 알아볼 이름이 필요합니다.

그 이름이 바로 ' a ' 입니다.

그 다음 = (대입 연산) 을 통해 그 공간에 10을 넣게 되는데요,

10 역시 어딘가에 저장되어 있는데, 임시로 잠깐만 불러와서 복사한 뒤에 값을 그 공간에 넣어주는 겁니다.

 

무슨 int를 그렇게 자세하게 말해요? 중요하거든요. 매우 중요합니다.

int 자체에 의미를 부여하지 맙시다. 우리가 가지고 가야 할 개념은 자료형을 통해 공간과 데이터 표현 방식 2가지에요.

 

double을 가지고 복습해 볼까요?

double b

" 메모리 공간에 실수형 자료를 저장할 공간을 만들어 주시고 이름은 b로 할게요 " 

 = 0

" 만들어 놓은 공간에 값을 초기화 할껀데 0을 잠깐 불러와서 복사한 뒤에 그 값을 b에 복사하고 0은 다썻으니까 가져가주세요 "

 

너무 오버스러운거라고요? 후에 보게 될 내용 중에 일부를 가져와 볼게요.

 

struct ListNode{
char data[10];
ListNode* link;
};

 

다른건 보지 말고 3 행의 ListNode* 을 봅시다.

위의 3행은

" 메모리 공간에 ListNode* 형 자료를 저장할 껀데 이름은 link로 할게요 "

이렇게 해석할 수 있겠지요. 한 가지 생각해보면 저 공간에 역시 주소가 있을거에요.

컴퓨터가 빌려준 공간이니까요. 저 공간에는 LsitNode* 형 자료가 저장될 거구요! 그게 뭔데요!!!!

 

*? ListNode? 곧 다룰 거에요. 그렇지만, 오늘 짚고 넘어간 내용은 반드시 기억했으면 해요!

공간과 데이터 표현방식 잊지 맙시다!

 

자료형을 정확하게 이해하는 것은 포인터, 구조체, 클래스를 이해하는데 많은 도움이 된답니다.

가벼운 주제를 가지고 너무 길게 썻네요. 그치만 그만큼 중요하다고 생각 되기에 길게 썼습니다.

마지막으로 그림으로 보고 마무리 할게요.

틀린 내용이나 헷갈리는 내용이 있다면 언제든지 감사하게 피드벡 받겠습니다!

그럼 천천히 다른 내용도 같이 알아보시죠.

다만, 시간 날 때 마다 정리해서 올릴게요!

728x90
반응형

'함께 알아가는 C++' 카테고리의 다른 글

C++ 세 번째 이야기, 클래스 1  (0) 2022.01.27
C++ 두번째 이야기, 참조자  (0) 2021.12.21