앞에서 배열의 크기를 정하지 않고 선언해도 C 언어 컴파일러가 자동으로 배열의 크기를 정하여 배열을 초기화하였습니다. 마찬가지로 초기화하는 문자열을 확인하여 ‘문자열 크기 + 1’의 크기로 배열 크기를 지정하고 저장합니다. 여기서 +1은 널 문자를 위한 것입니다.
그러므로 다음과 같이 문자형 배열을 선언과 동시에 초기화할 수도 있습니다.
char s2[] = "Hi, Woojin!";
이제 예제를 통해 확인해 볼까요?
string.c
#include <stdio.h> main() { char s1[12] = { 'H', 'i', ',', ' ', 'W', 'o', 'o', 'j', 'i', 'n','!', '\0' }; char s2[15] = "Hi, Woojin!"; char s3[] = "Hi, Woojin!"; printf("s1 문자열은 %s이고 문자열의 크기는 %d입니다.\n", s1, sizeof(s1)); printf("s2 문자열은 %s이고 문자열의 크기는 %d입니다.\n", s2, sizeof(s2)); printf("s3 문자열은 %s이고 문자열의 크기는 %d입니다.\n", s3, sizeof(s3)); }
실행 결과
s1 문자열은 Hi, Woojin!이고 문자열의 크기는 12입니다.
s2 문자열은 Hi, Woojin!이고 문자열의 크기는 15입니다.
s3 문자열은 Hi, Woojin!이고 문자열의 크기는 12입니다.
배열 s1, s2, s3 모두 같은 문자열 “Hi, Woojin!”을 저장합니다. 배열 s1은 저장할 문자열에 정확하게 배열 값을 선언하여 사용하였고, 배열 s2는 배열 크기를 저장할 문자열보다 큰 값인 15로 정하였습니다. 배열 s3는 저장할 문자열에 따라 컴파일러가 12개의 배열 크기를 할당하여 저장할 것입니다.