문자
문자는 배열에 넣지 않고, 변수에 넣어 보관이 가능하다.
#include <stdio.h>
int main (void) {
char c = 'a';
printf("%c\n", c);
}
결과값으로 a가 출력된다.
문자열
반면, 문자열은 배열에 넣어 보관해야한다.
#include <stdio.h>
int main (void) {
char str[6] = "coding";
printf("%s", str);
}
참고
C 언어에서 문자열을 배열에 저장할 때, 문자열의 길이에 대해 약간의 혼동이 있을 수 있습니다. 문자열의 길이가 n일 때, 배열을 n칸으로 만들어도 문제가 없을 수 있지만, 이는 문자열이 반드시 NULL 종료 문자('\0')를 포함한다는 가정하에 성립합니다.
C 언어에서 문자열은 문자들의 배열로 표현됩니다. 문자열의 끝을 나타내기 위해 NULL 종료 문자가 사용됩니다. 따라서 문자열의 길이가 n인 경우, 실제로 저장해야 하는 문자의 개수는 n+1입니다. n번째 인덱스에는 NULL 종료 문자('\0')가 들어가야 하기 때문입니다.NULL 종료 문자를 생략하면 문자열이 정상적으로 동작하지 않을 수 있습니다.
#include <stdio.h>
int main (void) {
char str[] = "coding";
printf("%d", sizeof(str));
}
sizeof 함수란 매개변수로 넘어온것의 메모리 크기를 알려주는 함수입니다. sizeof함수를 배열에 적용시키면, 배열의 길이를 알 수 있습니다.
위의 코드를 실행시키면, 배열 str의 길이는 6칸이 아닌 7칸이 나옴을 알 수 있습니다. 그 이유는 바로 문자열의 끝에 끝을 알려주는 \0(NULL 종료문자)가 있기 때문이겠지요.
번외
배열에 저장되는 문자가 영어냐 한글이냐에 따라 byte의 크기가 달라진다
영어 1글자 : 1byte
한글 1글자 : 2byte
'프로그래밍 > C' 카테고리의 다른 글
[C언어] 배열과 포인터 사이의 관계 (0) | 2023.05.16 |
---|---|
[C언어] 포인터 - 정의, 연산자, 선언, 상호관계성 (0) | 2023.05.16 |
[C언어] 함수의 선언과 정의 (0) | 2023.05.15 |
[C언어] 반환값 return에 대하여 (0) | 2023.05.15 |
C언어 switch case문 (0) | 2023.05.15 |