본문 바로가기

기초83

C++ 기초 : 문자열 (2) char c = 'a'; 위와 같은 코드가 있습니다.char형이기 때문에 1Byte로 소문자 a를 표현합니다. 그럼 char형은 무조건 1Byte만 표현할 수 있냐고 하면 그건 아닙니다.Multi Byte Character Set(멀티 바이트 캐릭터 셋) 방식이므로가변 길이로 작동하죠.  아래 코드를 보시면 a, b, c는 1Byte로 표현할 수 있으므로 한 칸씩 차지하고 있지만한과 글이라는 문자는 2Byte로 표현해야 하기 때문에두 칸씩 차지하고 있습니다. (한은 [3] ~ [4], 글은 [5] ~ [6])  보기 편하게 음수가 아닌 양수로 표현하면 위와 같은 값이 배열에 담긴 것을 확인할 수 있습니다. 근데 이러한 Multi Byte Character Set.. 2024. 4. 3.
C++ 기초 : 문자열 (1) 1Byte로 표현할 수 있는 양수는 0 포함, 255까지이기 때문에1Byte로 충분합니다. 그래서 문자를 표현하는 자료형 char는 1Byte이죠.  그러나 이는 영어만 사용할 때 기준이고,당장 한글만 표현하려고 해도 '가', '달', '꿼' 등 경우의 수가 엄청 많습니다. 이를 위해 다른 체계가 필요했고 그때 사용하는 자료형이2Byte 정수로, 문자를 표현하는 자료형 'wchar_t'입니다. 2Byte면 16Bit이고, 이는 2의 16제곱이므로 0 ~ 65,535의 수를 표현할 수 있습니다. 한글을 표현하는데 충분하겠죠.  아래 코드를 보시면 wchar_t를 사용한 모습을 볼 수 있습니다. 대입할 문자 앞에 대문자 L을 붙여, 해당 문자를2Byte 공간에 넣을 것을.. 2024. 4. 2.
C++ 기초 : 문자 아래 코드를 보시죠. char형 변수 c를 선언하고 1을 대입했고bool형 변수 b를 선언한 후 1을 대입했습니다.  1을 대입한 변수 b의 값은 true네요.bool형은 1Byte 크기를 가진 자료형으로bool형 변수에 0이 들어오면 false,1이 들어오면 true로 인식하기 때문입니다.  변수 c의 값도 확인해 보죠.1이 들어가 있긴 한데 뒤에 '\x1'가 같이 있네요. 무슨 의미일까요? char형은 정수 1Byte를 담을 수 있습니다.특히 문자를 표현하는데 사용하죠.char형 변수에 숫자를 넣으면그에 대응하는 문자가 출력되는 것입니다. 아래 표를 보시죠. 컴퓨터는 위와 같은 표를 기준으로숫자에 대응하는 동작을 하거나 문자를 출력하는 것입니다.이러.. 2024. 4. 1.
C++ 기초 : void void는 자료형을 지정하지 않았음을 의미합니다. 그렇기 때문에 void형을 가진 변수는 선언할 수 없으며,void형 함수는 반환 값이 존재할 수 없습니다.  그러나 void형 포인터 변수는 만들 수 있습니다. 아래 코드를 보시면 10번째 줄에 void형 포인터 변수 pVoid가 선언되었습니다.  이후 12 ~ 15번째 줄에서 다양한 자료형을 가진변수의 주솟값을 저장하였습니다. 여기서 void형 포인터 변수의 첫 번째 특징이 나옵니다. 1. 자료형을 지정하지 않았으므로 어떤 자료형을 가진 변수라도 주솟값을 저장할 수 있다. 강제로 형변환을 하지 않아도자료형에 상관없이 주솟값을 저장할 수 있는 모습이죠.  17번째 줄에서 pVoid에저장된 주소를 찾아가 값.. 2024. 3. 31.
C++ 기초 : const 포인터 예시 const 포인터는 어떤 상황에서 사용할까요?  아래 상황을 봅시다. main 함수에서 '다른 함수'를 호출하였습니다. 근데 다른 함수가 main 함수의 지역 변수 a를매개변수로 받는 함수입니다. 그럼 다른 함수가 만들어지면서 main 함수의 지역 변수 a를복사해서 다른 함수의 지역 변수에 넣을 것입니다. 그리고 다른 함수의 동작이 모두 끝나면 소멸하겠죠.  근데 만약에 변수 a의 크기가 엄청 크다고 가정해 봅시다.심지어 다른 함수는 자주 호출되는 함수라고 가정해 보죠. 그러면 아주 큰 용량의 변수 a가 자주 복사되고 소멸하는 것을 반복하겠죠? 프로그램의 성능이 많이 떨어질 것입니다.  성능을 위해서매번 함수를 호출할 때마다 복사하지 말고 포인터를 사용.. 2024. 3. 31.
C++ 기초 : const 포인터 포인터 변수에도 const 키워드를 붙여 상수화할 수 있습니다. 이 경우 두 가지 상황이 발생하는데요. 어떤 포인터 변수가 변수 a의 주소를 저장하고 있습니다. 이때 const를 통해 포인터 변수가 저장하고 있는 변수를상수화하거나, 포인터 변수 자체를 상수화할 수 있습니다.  예를 들어 보죠. 포인터 변수 pInt는 변수 a의 주솟값을 저장하고 있습니다. pInt를 통해 변수 a의 값을 직접 변경하려고 하니 오류가 발생합니다.식이 lvalue여야 한다고 합니다. 이는 a가 rvalue로 인식되어수정할 수 없는 상태가 되었다는 것입니다. 포인터 변수가 저장하고 있는 변수를 상수화한 상황이죠.  이번에는 또 다른 상황을 봅시다. 13번째 줄부터 새로운 코드를.. 2024. 3. 31.