문자 char

2022. 11. 30. 15:01개인공부/C++

char 와 wchar_t

 

char 의 경우에는 1바이트이므로 저장할 수 있는 문자의 종류에 한계가 많아서

wchar_t 는 2바이트이므로 저장가능한 문자의 종류가 많으므로 wchar를 사용한다

 

문자 1과 숫자 1은 다른 값을 가진다.

 

char c = 1; char 자료형 2번째 값으로 보여주며

c = '1';  1의경우 고유의 저장된  값을 가진다.

 

문자 배열

 

문자열에서는 종료하는 시점을 알수없으니 null 문자로 마무리한다.

문자 배열은 "abfdfkd" 등으로 저장이 가능한데  앞쪽에 L을 붙이면 2바이트로 저장한다는 의미이다.

 

정의

 

wchar szchar[255] = L"안녕하세요";

로 정의가 가능한데 [ ] 에는 배열의 정의처럼 메모리 크기를 정의한다.

szchar[0]; 부터 시작하며  0은 '안' 이라는 문자를 저장한다.

그후에는 [6] 값에서는 문자열의 끝은 표현하기 위해서 null 문자가 존재한다.


그리고 문자열의 경우에는 ROM 읽기영역 안에서 존재한다

 

Q.1 문자열의 시작주소를 알려주면 문자열의 길이를 알려주는 함수를 구현해보자

 

이런식으로 구현하였다 

먼저 문자열의 길이이므로 int 값으로 반환하고 

const wchar_t* 은 문자열의 시작 주소값을 _pstr 로 받는다

그리고 count 함수와 for문과 if문을 통해서 조건을 설정하고 문자열 길이 함수를 구현하였다

 

* tip : 비교연산자를 이용할때 상수값을 왼쪽에 배치하는 습관을 만들자

 

Q.2  문자열 2개가 주어졌을때 둘을 이어붙이는 함수를 구현하자

주소값을 받아 주소값을 변경해주었다 

a1 과 a2 의 값을 받아서 a3 문자열에 a1 + a3를 대입해주었다

이 과정에서 a3 주소값 만을 변경하기때문에 const 를 유일하게 빼주었다.

( const 넣고 코딩하다가 오류가 나서 알았다 ㅎ)

물론 문자배열의 메모리 크기를 알아와서 

a1 + a2 +1(null 공간) <= a3 이라는 조건을 만족해야 버그이 일어나지 않지만

귀찮아서 a3배열의 크기를 [255]로 처음부터 크게 만들었다 만약

필요하다면 if 문을통해서 체크를 해줬을 것이다

 

Q.3 숙제 두 문자열을 비교해서 완벽하게 일치하면 0, 다를때 왼쪽이 우열이면 -1 , 오른쪽이 우열이면 1 이 나오는 함수

 

숙제로는 강의 선생님이 위의 문제를 제공하였다.

위의 코드로 구현하였다 

 

!!가독성과 내가 무엇을 코딩하는지 순서를 정하고 주석을 달아주는 습관을 들이자!!

'개인공부 > C++' 카테고리의 다른 글

구조체, 동적할당  (0) 2022.12.03
함수 오버로딩  (0) 2022.12.03
const  (0) 2022.11.28
포인터 변수 / 포인터 배열  (0) 2022.11.27
변수  (0) 2022.11.26