Лишние символы при инициализации символьного массива
Вопрос в том, как себя ведёт массив символов, объявленный с каким-то конкретным размером n в момент, когда мы пытаемся его инициализировать с клавиатуры и вводим строку длинной >n?
#include <iostream>
#include <cstdio>
int main()
{
char str[10];
gets(str);
std::cout << str << std::endl;
return 0;
}
Если в данном примере мы объявили символьный массив str с размером 10, а потом методом gets() ввели строку, например, "hello, world!" размером 14 (вместе с '\0'), то cout выдаст результатом всё же "hello, world!". Вопрос - почему так? Ведь размер исходного массива был объявлен 10.