Если вход содержит менее 256 символов, что тогда содержат «пустые» элементы массива? Является ли каждый неиспользуемый элемент '\ 0' или как?
Это зависит.
Глобальные переменные и переменные stati c инициализируются по умолчанию. Локальные переменные неинициализированы - если вы явно не инициализируете их.
char buf1[256]; // global variable, all zeroes
int main() {
char buf2[256]; // uninitialized memory
}
Чтение из buf1
имеет хорошо определенное поведение, а чтение из buf2
- нет, так что если вы std::cin.get(buf2, <some_size>);
и читаете из памяти вне \0
, который std::cin.get()
помещает в ваш массив, ваша программа будет иметь неопределенное поведение .
Чтобы изменить это, вы также можете по умолчанию инициализировать свои локальные переменные:
int main() {
char buf2[256]{}; // default initialized memory
}