기초지식

07. 삼항 연산자 + 문자열

로만주 2023. 5. 15. 20:44

▶ 삼항 연산자

 

- 경우에 따라서 if ~ else문을 일부 대체 할 수 있다.

    ㄴ 적당한 로직에 활용을 한다면 코드 간결화를 얻을 수 있다.

 

▶ 문자열

 

- 문자열이란 문자의 조합을 의미하며 문자열을 활용할 경우 문자가 조합된 단어 또는 문장을 표현하는 것이 가능하다.

 

- 문자열을 활용하면 화면 상에 문자로 된 정보를 출력하는 작업이 수월하다.

 

▷ 메모리 단위

 

- char는 1 byte

ㄴ 메모리 효율문제

ㄴ 배열을 이용해서 눌러 담는 과정이 필요하다.

 

- 1 byte는 8 bit

    ㄴ 1 bit: 0과 1을 표현 할 수 있는 가장 작은 단위.

 

- 문자를 표현함에 있어 메모리 효율 문제로 int 보다 char형이 어울린다.

ㄴ OS문제로 넘어감.

ㄴ 싱글 코어에서 우선 할당 됨.

 

- int 형으로 했을 경우 연산이 빠르다. -> 굳이 연산할 일이 없는 문자 표현에는 메모리 낭비를 할 이유가 전혀 없다.

 

※ BIT -> BYTE -> KB -> MB -> GB -> TB -> PB(페타바이트) -> EB(에타바이트) -> ZB(제타바이트)

ㄴ 메모리 단위

 

(조건식) ? true : false;
(numA > numB) ? dataA : dataB;
// 조건식이 참이면 dataA 반환 / 거짓이면 dataB가 반환된다.

▶ 주의를 기울여야 할 문자열

ㄴ 메모리 사용량에 지대한 영향

ㄴ 강한 형식 검사

 

- C / C++은 타입에 엄격한 언어

ㄴ 기본적으로 NULL 지원

 

★ 면접 문제

- 문자와 문자열의 차이점에 대해

ㄴ 문자는 NULL문자 추가 안된다.

ㄴ 문자열은 NULL 문자가 추가된다.

ㄴ ◇ 메모리 접근이 가능하다.

ㄴ ◇ 오류가 매우 다발적으로 발생 할 수 있다.

ㄴ ◇ 모호함 에러가 발생 할 수 있다.

ㄴ ◇ 항상 명시

ㄴ ◇ 예외처리에 신경 써야 함.

 

▷ NULL

 

- iostream에 정의 되어 있다.

 

- NULL은 0 주소를 의미하며 그렇기에 차후 배울 포인터 변수를 초기화 할 때도 사용 할 수 있다.

char* p = NULL	==	char* p = 0;
int n = NULL	!=	int n = 0;

- 전자는 p라는 변수의 주소값에 0을 넣는 것이고 후자는 정수 0을 n에 넣겠다라는 의미이다.

 

- C / C++ 언어의 문자열 표현 방법

ㄴ C / C++ 언어는 "" 조합을 통해서 문자열을 표현하는 것이 가능하며 이때 char의 배열을 이용한다.

ㄴ 또한, 문자열 상수를 통해 초기화를 진행 할 경우 널 문자를 명시적으로 기입하지 않아도 된다.

 

char arr1[] = { 'h' , 'i' , '~' };
// 문자만 저장된 배열 -> 문자열이라고 할 수 없다.

char arr2[] = { 'h' , 'i' , '~' , '\0' );
// 문자열 배열

 

- 문자 배열과 문자열의 차이점은 \NULL(\0) 의 포함 여부

 

- 문자열 저장을 목적으로 char형 배열을 선언 할 경우 \NULL 은 문자열 마지막에 자동으로 삽입된다.

 

- 널 문자의 아스키 코드 값은 0이다.

ㄴ 그리고 이를 문자 형태로 출력 할 경우 아무런 출력이 발생하지 않는다.

 

★ C / C++ 언어에서는 문자열이 되기 위해서 반드시 널 문자를 포함해야 한다.

ㄴ 이유? 끝을 나타내기 위해

'기초지식' 카테고리의 다른 글

08-2. 4대 문자열  (0) 2023.05.17
08-1. 사용자 정의 자료형  (0) 2023.05.16
06-2. 난수 + 셔플  (0) 2023.05.13
06-1. 배열  (0) 2023.05.11
05-3. 전처리기  (0) 2023.05.11