더듬이의 헬로월드

Hello, World!

카테고리 없음

[C++기본] 19.문자

더듬이 2021. 9. 3. 00:24
728x90

대표적으로 4가지의 메모리영역을 다시 생각해보자

1.스택 영역

2.데이터 영역

3.힙 영역

4.ROM(코드)영역


문자 자료형 char

char은 1바이트의 크기를 가지는 정수형 자료형이다.

문자형 자료형인데 왜 정수형으로 표현될까?


ASCII CODE, 아스키 코드

바로 아스키 코드를 이용해 정수와 문자를 매칭 시키기 때문이다.

즉, 정수65는 char형 변수에서는 'A'라는 의미도 갖는 것이다.

컴퓨터에서 문자라는 의미는 지정된 정수와 매칭시켜주어 보여주는 것이라고 할수 있다.

원래는 정수형 변수이지만, 문자형으로 해석하는 순간 사용자에게는 문자 형태로 보여진다.

    int test1 = 1;
    //1이 대입된다.
    char test2 = '1';
    //49가 대입된다

문자 '1' 과 숫자 1은 다르다.


문자의 끝

문자가 나열되어 있다면, 문제가 발생한다.

도데체 어디까지를 문자라고 볼 것인가?

NULL문자

"Hello World" 라는 문자열이 있다고 가정해보자.

문자열은 문자들의 배열이라고 할 수 있다.

모든 문자는 각 문자에 맞는 정수값을 가지며, 대문자,소문자, 숫자는 물론,

스페이스(공백) 나 줄바꿈 도 모두 각각의 정수값을 가진다.

위 그림은 "Hello World"를 각 문자에 맞는 정수형으로 바꾸었을 때의 그림이다.

공백을 포함하여 11자를 적었는데, 그림에서는 12바이트의 공간을 차지하고 있다.

컴퓨터는 문자열을 어디까지 출력해야 하는지 모른다.

그래서, 문자열의 끝은 항상 NULL문자로 끝난다.

NULL문자는 문자열의 끝을 나타내며, 아스키 코드 10진수로는 0의 의미를 가지며, \0과 같다.

즉, 내가 적은 것은 11자이지만, 실제로는 12바이트의 공간을(공백 포함) 차지하고 있다.

모든 컴퓨터의 문자는 정수값으로 바뀔 수 있으며, 문자열의 끝에는 널문자가 온다. NULL문자==0==\0

728x90