В вашем примере все экземпляры выделены сразу - все элементы от 0 до 99 включительно действительны. Если бы вы использовали тип с конструктором, все 100 были бы построены.
EDIT - как отмечали другие, только потому, что он построен, не означает, что ничего не было инициализировано. Конструктор по умолчанию для «int» оставляет его нетронутым (ваша работа должна инициализировать его так, как вам хочется). Конструктор по умолчанию для «struct» вызывает конструкторы для своих членов. То есть, построение здесь мало значит, но память выделена и готова для вас (инициализировать и использовать).
Первая неинициализированная «часть массива» не является частью массива - она выходит за пределы. Например ...
Coordinate mistake = places [100]; // Above the upper bound
Это поведение не определено. Вы можете получить сбой (какое-то связанное с памятью исключение из процессора). Ваша программа может успешно работать, не зная, что она использует недопустимые данные нежелательной почты. В приведенном выше случае, поскольку то, что происходит, довольно очевидно, вы, вероятно, получите предупреждение о компиляторе, но это, как правило, не будет.
Если вы написать в индекс массива недоступный, вы можете быть развращает другие переменные или обратный адрес вашей функции или просто о чем-нибудь, так что поведение всей вашей программы с этого момента не определен , Это является основой одного из самых больших целых классов недостатков безопасности и «эксплойтов».
std :: vector - еще один способ создания массивов. Он не выделяет сразу все элементы - это динамический массив, который позволяет изменять размер (и управляет). Тем не менее, он не будет выходить за пределы индексов больше, чем базовый массив C-стиля.
Память выделяется автоматически, когда вы объявляете места. Если вы выйдете за пределы, вы, вероятно, вызовете ошибку сегментации. – Beta
Поскольку это помечено C++, вам не нужно использовать идиому C typedef. Вместо этого используйте 'struct Coordinate {...};'. Это определяет тип, называемый «Координата» в C++. – Clifford
@Beta, это ответ, а не комментарий. Почему бы вам не ответить на него? – paxdiablo