문자의 배열의 끝에는 항상 마침표 개념의 \0
이 필요
#include <stdio.h>
int main()
{
int a = 1;
int int_arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // 배열 초기화
printf("%i %i %i\n", int_arr[0], int_arr[1], int_arr[9]); // 0, 1, 9 위치의 메모리 가져온다.
printf("%i\n", int_arr[10000]); // int_arr 은 10개, 즉 40 byte의 공간 차지
// 10000과 같은 공간 외의 메모리를 읽게 하면 값이 정상적으로 나오지 않는다.
}
#include <stdio.h>
int main()
{
char c = 'a';
char str1[10] = "Hello"; // null character
char str2[10] = { 'H', 'i' }; // 두 가지 방법 모두 배열 초기화
printf("%c\n", c);
printf("%s\n", str1); // string의 format specifier
printf("%s\n", str2);
Q. 10칸의 메모리 공간을 가지고 있다면, Hello 다음에 몇 칸 띄어서 Hi가 출력되지 않을까?
A. NO. null character인 \0을 만나게 되면 더 이상 출력을 하지 않는다.
printf("%hhi %hhi %hhi %hhi %hhi\n",
str2[0], str2[1], str2[2], str2[3], str2[4]); // 72 105 0 0 0
/* char str3[10] = "Hello, World"; // array size is not enough */
char str3[20] = "Hello, \0World";
printf("%c\n", str3[10]); // r 출력
printf("%s\n", str3); // Hello, 출력
}