【 C 언어 】 #37 NULL 문자 이해하기
문자열 길이를 구하는 문제를 통해 NULL 문자에 대해 이해 할 수 있다.
▶ 문제 : 문자열 길이(예, abcdefg: 길이 7) 를 구하는 코드를 작성하라.
▶ 포인트 :
- 문자열의 끝은 항상 NULL('\0')문자 로 종료된다.
- NULL 문자는 아스키 코드 값 '0' 이다
- 문자열 길이를 구하는 함수를 따로 작성하여 코딩한다.
- 문자형 포인터 변수(*pstr)를 사용하여 코딩한다.
- *pstr 은 pstr이 가리키는 번지에 저장되어 있는 값을 의미한다.
▶ 프로그램 :
# 이미지를 클릭하면 확대 되어 선명하게 보실 수 있습니다.
▶ 실행 결과 :
▶ 보충설명 :
- *pstr 은 pstr이 가리키는 번지에 저장되어 있는 값을 의미한다. 따라서 pstr은 번지(주소) 라는 것을 이해 해야 한다.
- pstr은 문자열의 선두 번지를 가리키고 있기 때문에, pstr의 번지가 1씩 증가(pstr++)함에 따라 *pstr의 값은 첫 번째 값 a 부터... b, c, d, e, f, g, \0 처럼 된다.
- while문에서 NULL문자('\0') 의 아스키 값은 '0' 이기 때문에 문자열 끝을 알리는 NULL 문자를 만나면 while 문을 빠져 나오게 된다.
- pstr++; 은 pstr의 번지를 1만큼 증가 시킨다(pstr은 포인터 변수 이기 때문)
- len++; 은 문자열 길이 값을 1만큼 증가 시킨다
문자열 'abcdefg' 가 메모리에 저장된 모습을 그림으로 그려 보면 아래와 같다.
문자열의 첫 번째 a가 저장된 번지를 '1000'번지라고 가정 해 보자.
# 이미지를 클릭하면 확대 되어 선명하게 보실 수 있습니다.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
▶ 소스코드 다운로드 :
'Language > C & C++' 카테고리의 다른 글
【 C 언어 】 #39 구조체 이해하기2 (배열, for문 활용) (0) | 2018.05.03 |
---|---|
【 C 언어 】 #38 구조체 이해하기2 (구조체 배열 포함) (0) | 2018.05.03 |
【 C 언어 】 #36 문자열 포인터 이해하기 (0) | 2018.04.23 |
【 C 언어 】 #35 포인터 이해하기 (0) | 2018.04.23 |
【 C 언어 】 #34 변수의 메모리 번지 이해하기 (0) | 2018.04.17 |