본문 바로가기

Programming/C Language

char형 배열 , 문자열

이번에는 배열의 한 종류인 문자열에 대해 공부하자

우리는 한 문자를 입,출력 하기위해 char라는 자료형을 사용한다.

배열을 선언하는데 자료형은 char형으로 선언하면 어떻게 될까?

배열은 각각의 요소들을 나란히 정렬시키고 그 요소들이 문자들이라면 '문자열'을 만들수 있지 않을까?


char형 배열을 이용하면 문자열의 저장뿐만 아니라 문자열의 변경도 가능해진다.

이전에 언급한것과 같이 C언어 에서는 문자열을 " 큰 따옴표를 이용하여 표현한다.

다음의 예시를 보자


char[14] = "Good morning!";        이러한 char형 배열 선언을 통해 메모리 공간에는 char변수14개가 나란히 할당되고 , 이 배열에는 이러한 형태로 문자열이 저장된다.


 

\0 


우리가 입력한 문자는 공백을 포함하여 13개다. 위에서 볼수있듯 맨 마지막 요소에 " \0 " 이라는 특수문자가 들어가있다.
이 특수 문자는 "널(null)"문자라고 부르며 문자열의 끝에 자동으로 삽입된다.    (널 문자가 있어야 문자열이다!)
따라서 , 우리가 문자열 저장을 목적으로 char형 배열을 선언할 경우에는 널 문자의 자리까지 고려하여 배열의 길이를 결정해야 한다.


다음 예제를 통해 실제로 널 문자가 문자열 끝에 삽입되는지 확인해보자.



이렇게 코드를 작성하고 결과값을 출력해보자!




결과값을 보니 %c로 출력한 널 문자는 아무것도 출력되지 않았고 %d로 출력한 널문자는 0이 출력되었다.

우리는 이 결과를 통해 널 문자 ( \0 ) 의 아스키 코드값은 0이고 아스키 코드는 아무런 출력이 없다는 걸 확인 했다.
(널 문자와 공백 문자는 엄연히 다르다!!! 아스키 코드 값 또한 다르니 궁금하다면 직접 출력을 통해 알아보자!)



그리고 배열을 사용함에 있어 주의할점이 하나 있다!
scanf_s 함수를 통해 배열에 데이터를 입력받고자 할때  , 데이터를 입력받는 배열의 이름앞에는 ' & ' 연산자를 붙이지 않는다!
이러한 이유는 추후에 포인터 개념을 배우고 설명하도록 하겠다.



'Programming > C Language' 카테고리의 다른 글

포인터와 배열의 관계  (0) 2017.10.31
포인터 정리  (0) 2017.10.31
1차원 배열  (0) 2017.10.31
static 변수 (static variable)  (0) 2017.10.31
전역 변수 (Global Variable)  (0) 2017.10.31