char
char
타입은 하나의 글자를 저장하는 데이터 타입이다.char
타입은 1byte(8비트)로 표현한다.char
형의 배열을 이용하여 문자열을 변수에 저장할 수 있다.\0
(NULL 문자) 반드시 표시하여 문자열의 끝을 알린다.정수형 변수는 사용되는 메모리 크기가 4bytes로 항상 일정하다.
그러나, 문자열은 사용되는 메모리의 크기가 일정하지 않다.
저장되는 문자 개수에 따라 메모리가 달라지기 때문에 NULL 문자를 통해 끝을 알린다.
따라서 배열의 크기가 문자열 + 1(NULL 문자)
보다 작으면 버퍼 오버플로우가 발생할 수 있다.
예. Hello
를 문자열에 저장한다면, 각 한 글자당 배열 요소 하나를 차지한다. 그리고 마지막 글자 다음에는 \0
가 할당되고 그 이후로는 쓰레기값이 들어간다.
H | e | l | l | o | \0 | 쓰레기값... |
---|
선언과 동시에 초기화
char a[6] = "Hello";
cout << a; // Hello
char a[6];
a = "Hello";
cout << a; // Hello
strcpy()
사용
<cstring>
헤더 미리 정의해야 한다.strcpy()
사용할 경우, 기존 값을 덮어버린다.#include<cstring>
char a[6];
strcpy(a, "Hello");
cout << a; // Hello
<cstring>
vs<string>
<string>
<cstring>
사용 방식 C++ 스타일(객체지향) C 스타일(함수 기반, 배열 사용) 주요 타입 std::string
char
,char*
메모리 안정성 높음(자동 관리) 낮음(수동 관리) 오버플로우 위험 있음 기타 문자열 끝은 반드시 \0
로 끝나야 함
수동으로 복사
\0
도 복사해준다.char a[6];
a[0] = 'H';
a[1] = 'e';
a[2] = 'l';
a[3] = 'l';
a[4] = '0';
a[5] = '\0'; // 문자열의 끝
cout << a; // Hello
참고 자료