문자,문자열

김태훈·2024년 1월 1일
0

C/C++

목록 보기
12/22
post-custom-banner

문자

문자를 치면 문자에 해당하는 아스키 코드 숫자를 비트에 넣는다.
숫자를 넣는다면?
char a=64;
숫자 64,즉 비트들에 64가 박히고 그 비트 해당하는 아스키 코드의 문자를 a에 대입

char =‘문자’ 멀티바이트, 조건부에 따른 1바이트 또는 2바이트
wchar_t=L”문자” 유니코드(와이드 바이트 ) 무조건 2바이트 씩

문자열

1. 복사 생성

wchar_t wchar[10]=L”abcdef”;  
// 읽기 전용 메모리(ROM) 적힌 코드를 복사해서 2바이트씩 10개 wchar[1]=L”a”; //문제 없음

(2바이트 하나에 하나의 문자, 문자열이기 때문 5~9인덱스까지는 비워있으니까 0으로 채워짐, 10번 인덱스에는 문자열이 끝났다는 표시의 숫자0이 들어감)
읽기전용 메모리의 코드를 복사해서 스택 영역에 만들었기 때문,원본 훼손 x

2.코드 영역 참조 주의

const wchar_t* pchar= L”abcdef”;
//pchar[1]=L”c”; 불가능
//*(pcar+1)=L”c”; 불가능

이유: 문자열 자체가 코드 영역에 쓰여있기 때문, 문자열 자체의 반환타입이 const char*이기 때문에 원본 참조는 불가!-> 프로그램 실행 중 코드를 변경하는 것과도 같음, 런타임 에러

profile
복습을 위한 핵심 내용 및 모작
post-custom-banner

0개의 댓글