문자 - 데이터 숫자를 아스키코드표에 대응해서 문자로 표현
C++에서는 char 자료형을 사용하여 문자를 표현합니다. char는 1바이트 크기의 자료형으로, ASCII 코드에 따라 256가지의 문자를 나타낼 수 있습니다.
char letter = 'A';
문자열, 연속된 메모리 공간에 문자를 나열한다. 문자열의 끝에는 반드시 null 문자가 추가되는데 이는 문자열의 끝을 알리는 용도이다.
문자열의 주소를 받아오고 이 문자열의 주소는 ROM(Read Only Memory)에 저장되어 있기 때문에 직접 접근하여 수정이 불가능하다.
const char* pString = "abcdef";
//안됨!
//pString[0] = 'j';
수정이 가능하게 하려면 문자열을 배열로 복사하여 지역 변수(스택 메모리)나 동적 메모리(힙 메모리)에 저장하는 방법이 있다.
char szName[7] = "abcdef";
동적 할당을 사용하게 되면 동적 할당한 변수는 힙 메모리에 저장된다. 이 때도 문자열 자체의 주소는 ROM에 저장되어 있지만 동적 할당을 하면서 힙 메모리에 문자열을 배열로 복사해 할당하기에 스택 메모리를 이용하는 것과 비슷한 로직이라고 이해하면 된다.
#include <iostream>
#include <cstring>
void example() {
const char* originalString = "abcdef";
char* heapString = new char[strlen(originalString) + 1]; // 힙 메모리에 저장
strcpy(heapString, originalString);
heapString[0] = 'j'; // 수정 가능
std::cout << heapString << std::endl;
delete[] heapString; // 메모리 해제
}