프로그래밍 언어 활용
배열 형태의 문자열 변수
원본 80~81쪽
C언어에서는 큰따옴표(“ ”)로 묶인 글자는 글자 수에 관계없이 문자열로 처리된다.
C언어에는 문자열을 저장하는 자료형이 없기 때문에 배열, 또는 포인터를 이용하여 처리한다.
• 형식
| char 배열이름[크기] = “문자열” |
|---|
배열에 문자열을 저장하면 문자열의 끝을 알리기 위한 널 문자(‘\0’)가 문자열 끝에 자동으로 삽입된다.
배열에 문자열을 저장할 때는 배열 선언 시 초기값으로 지정해야 하며, 이미 선언된 배열에는 문자열을 저장할 수 없다.
문자열 끝에 자동으로 널 문자(‘\0’)가 삽입되므로, 널 문자까지 고려하여 배열 크기를 지정해야 한다.
| l | o | v | e | \0 |
|---|
#include <stdio.h>
main( )
{
char a = 'A';
문자형 변수 a에 문자 ‘A’를 저장한다. 문자형 변수에는 한 글자만 저장되며, 저장될 때는 아스키 코드값으로 변경되어 정수로 저장된다. a가 저장하고 있는 값은 문자로 출력하면 ‘A’가 출력되지만 숫자로 출력하면 ‘A’에 대한 아스키 코드 65가 출력된다.
char b[9] = "SINAGONG";
9개의 요소를 갖는 배열 b를 선언하고 다음과 같이 초기화한다. 저장되는 글자는 8자이지만 문자열의 끝에 자동으로 저장되는 널 문자(‘\0’)를 고려하여 크기를 9로 지정한 것이다.
| S | I | N | A | G | O | N | G | \0 |
|---|
배열 b
b[0] b[1] b[2] b[3] b[4] b[5] b[6] b[7] b[8]
char *c = "SINAGONG"; ❶
포인터 변수 c에 “SINAGONG”이라는 문자열이 저장된 곳의 주소를 저장한다.
printf("%c\n", a);
printf("%s\n", b);
변수 a의 값을 문자로 출력한다. 배열 위치를 나타내는 첨자 없이 배열 이름을 사용하면 배열의 첫 번째 요소의 주소를 지정하는 것과 같으므로 배열 b의 첫 번째 요소가 가리키는 곳의 값을 문자열로 출력한다.
printf("%s\n", c);
}
포인터 변수 c가 가리키는 곳의 값을 문자열로 출력한다.
결과
메모리
주소0000⋮
| 1Byte 1Byte 1Byte 1Byte 1Byte 1Byte 1Byte 1Byte 1Byte | ||||||||
| 'S' | 'I' | 'N' | 'A' | 'G' | 'O' | 'N' | 'G' | \0 |
| 1000 1008 | 1016 | 1024 | 1032 | 1040 | 1048 | 1056 | 1064 | |
| 1000 |
C
⋮9999
위 코드 중 ❶번을 실행할 경우 메모리를 그려보면 다음과 같다.