К сожалению, в С++ не проверяется выход индекса за пределы массива. Этот язык будет рад предоставить вам доступ к элементу integerArray[ 200 ] . Более того, С++ позволит вам обратиться даже к integerArray[ -15 ] . Приведём такую аналогию. Имеется улица, на которой 128 жилых домов. Если мы захотим найти 200-й дом, идя вдоль улицы и пересчитывая дома, то его просто может не быть. Тут могут быть заброшенные руины или, хуже того, дом, стоящий уже на другой улице! Чтение значения элемента integerArray[ 200 ] может дать некоторое непредсказуемое значение или даже привести к ошибке нарушения защиты ( вы вторглись в частные владения, куда вас не звали... ), а запись — к совершенно непредсказуемым результатам. Может, ничего и не случится — вы просто попадёте в заброшенный дом, а может, вы сотрёте тем самым какие-то жизненно важные данные. Словом, случиться может что угодно — вплоть до полного краха программы.

«Самая распространённая ошибка — неправильное обращение к последнему элементу по адресуintegerArray[ 128 ] . Хотя это всего лишь следующий за концом массива элемент, записывать или считывать его не менее опасно, чем любой другой некорректный адрес.»
[ Атас! ]
Использовать ли массивы...97
Разумеется, программа ArrayDemo делает то же самое, что и не основанные на массивах программы, которые рассматривались раньше. Правда, в этой версии несколько изменён ввод множества чисел, но вы вряд ли будете потрясены этой особенностью.
И всё же в возможности повторного отображения введённых значений кроется значительное преимущество использования массивов. Массивы позволяют программе многократно обрабатывать серии чисел. Главная программа была способна передать массив входных значений функции displayArray( ) для отображения, а затем в SumArray( ) для суммирования.
_________________
97 стр. Глава 7. Хранение последовательностей в массивах
Определение и использование массивов с элементами-массивами...98
Массивы представляют собой весьма удобную структуру для хранения последовательности чисел. В некоторых приложениях приходится работать с последовательностью последовательностей. Классический пример такой матричной конфигурации — крупноформатная таблица, распланированная по образцу шахматной доски ( каждый её элемент имеет две координаты — x и у ).
В С++ матрицы определяются следующим образом:
int intMatrix[ 10 ][ 5 ] ;
Эта матрица может иметь 10 элементов в одном измерении и 5 в другом, что в сумме составляет 50 элементов. Другими словами, intMatrix является 10-элементным массивом, каждый элемент которого — массив из 5 элементов. Легко догадаться, что один угол матрицы обозначается intMatrix[ 0 ][ 0 ] , тогда как второй — intMatrix[ 9 ][ 4 ] .
Индексы intMatrix можно рассматривать в любом удобном порядке. По какой оси отложить длину 10 — решайте сами, исходя из удобства представления. Матрицу можно инициализировать так же, как и массив:
int intMatrix[ 2 ][ 3 ] = { { 1 , 2 , 3 } , { 4 , 5 , 6 } } ;
Здесь фактически выполняется инициализация двух трёхэлементных массивов: intMatrix[ 0 ] — значениями 1, 2 и 3, a intMatrix[ 1 ] — 4, 5 и 6 соответственно.
►Использование символьных массивов...98
Элементы массива могут быть любого типа. В С++ возможны массивы любых числовых типов — float , double , long , однако символьные массивы имеют особое значение.
Слова разговорной речи могут быть интерпретированы как массивы символов. Массив символов, содержащий моё имя, таков:
char sMyName[ ] = { 'S' , ' t' , 'e' , 'p' , 'h' , 'e' , 'n' } ;
Моё имя можно отобразить с помощью следующей небольшой программы:
/* CharDisplay — выводит на экран массив символов в окне MS DOS */
#include
#include
#include
using namespace std ;
/* Объявления прототипов */
void displayCharArray( char stringArray[ ] , int sizeOfloatArray ) ;
int main( int nArg , char* pszArgs[ ] )
{
char charMyName[ ] = { 'S' , 't' , 'e' , 'p' , 'h' , 'e' , ' n' } ;
displayCharArray( charMyName , 7 ) ;
cout << endl ;
/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ;
return 0 ;
}
_________________
98 стр. Часть 2. Становимся функциональными программистами
/* displayCharArray — отображает массив символов, по одному при каждой итерации */
void displayCharArray( char stringArray[ ] , int sizeOfloatArray )
Читать дальше