Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Jimmy
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 11
#1

Почему размер символьного массива должен быть больше на 1 символ, а не на 2? - C++

17.09.2012, 05:19. Просмотров 606. Ответов 2
Метки нет (Все метки)

Привет! Пока читал учебник Шилдта, возник вопрос:
Объявляя символьный массив, который будет содержать строку с завершающимся нулем, вы должны задать ему длину на один символ больше, чем у самой длинной помещаемой в него строки. Если например, вы хотите объявить массив str, в котором будет находиться 10-символьная строка, то вы должны написать следующее:
C++
1
char str[11];
Почему Герберт Шилдт говорит, что следует задать длину на один символ больше, хотя как я понимаю, получается на два, если считать с нулевого индекса. Тогда где находится завершающийся нуль? В str[10] или str[11]?

И второй вопрос:
Чем завершается массив целых чисел?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2012, 05:19     Почему размер символьного массива должен быть больше на 1 символ, а не на 2?
Посмотрите здесь:
размер массива должен быть указан в новых выражениях C++
C++ Размер символьного массива
C++ Удалить символ из символьного массива
Как скопировать символ из символьного массива в другой массив C++
C++ Цикл: каждый символ символьного массива вывести на новой строке консоли
Создать динамический массив (Если чётных чисел больше, то массив должен быть укорочен на 2 элемента) C++
Описать абстрактный класс породить от него еще два,один должен остаться абстрактным,другой должен быть способен пораждать объекты C++
C++ Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ?
Длина short[] - Почему размер массива внутри make отличается? C++
В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить: C++
Операнд * должен быть указателем C++
Полиморфизм. Где он должен быть C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.09.2012, 06:09     Почему размер символьного массива должен быть больше на 1 символ, а не на 2? #2
Цитата Сообщение от Jimmy Посмотреть сообщение
Чем завершается массив целых чисел?
Ничем.
Цитата Сообщение от Jimmy Посмотреть сообщение
Почему Герберт Шилдт говорит, что следует задать длину на один символ больше, хотя как я понимаю, получается на два, если считать с нулевого индекса.
Когда объявляется массив, то число в скобках - количество элементов массива, а не максимальный индекс, т.е. : char str[11]; - это массив на 11 символов (10 - символов строки + '\0'). Максимальный индекс такого массива равен 10, где и находится '\0' . Символы самой строки располагаются с str[0] по str[9] включительно. str[11] - это уже выход за границу массива.
Jimmy
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 11
17.09.2012, 06:25  [ТС]     Почему размер символьного массива должен быть больше на 1 символ, а не на 2? #3
Спасибо! Я забыл, что число в скобках это количество элементов массива, исчисляемое не от 0, а от 1.
Yandex
Объявления
17.09.2012, 06:25     Почему размер символьного массива должен быть больше на 1 символ, а не на 2?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru