for(t=0; t<10; ++t)
cout << sample[t] << ' ';
return 0;
}
В C++ все массивы занимают смежные ячейки памяти. (Другими словами, элементы массива в памяти расположены последовательно друг за другом.) Ячейка с наименьшим адресом относится к первому элементу массива, а с наибольшим — к последнему. Например, после выполнения этого фрагмента кода
int i [7];
int j;
for(j=0; j<7; j++)i[j]=j;
массив
Для одномерных массивов общий размер массива в байтах вычисляется так:
Массивы часто используются в программировании, поскольку позволяют легко обрабатывать большое количество связанных переменных. Например, в следующей программе создается массив из десяти элементов, каждому элементу присваивается случайное число, а затем на экране отображаются минимальное и максимальное значения.
#include
#include
using namespace std;
int main()
{
int i, min_value, max_value;
int list [10];
for(i=0; i<10; i++) list[i] = rand();
// Находим минимальное значение.
min_value = list[0];
for(i=1; i<10; i++)
if(min_value > list[i]) min_value = list[i];
cout << "Минимальное значение: " << min_value << ' \n';
// Находим максимальное значение.
max_value = list[0];
for(i=1; i<10; i++)
if(max_value < list[i]) max_value = list[i];
cout << "Максимальное значение: " << max_value << '\n';
return 0;
}
В C++ нельзя присвоить один массив другому. В следующем фрагменте кода, например, присваивание
int а[10], b[10];
// ...
а = b; // Ошибка!!!
Чтобы поместить содержимое одного массива в другой, необходимо отдельно выполнить присваивание каждого значения.
В C++ не выполняется никакой проверки "нарушения границ" массивов, т.е. ничего не может помешать программисту обратиться к массиву за его пределами. Если это происходит при выполнении инструкции присваивания, могут быть изменены значения в ячейках памяти, выделенных некоторым другим переменным или даже вашей программе. Другими словами, обращение к массиву (размером
Например, С++-компилятор "молча" скомпилирует и позволит запустить следующую программу на выполнение, несмотря на то, что в ней происходит выход за границы массива
Осторожно!
// Некорректная программа. Не выполняйте ее!
int main()
{
int crash[10], i;
for(i=0; i<100; i++) crash[i]=i;
return 1;
}
В данном случае цикл for выполнит 100 итераций, несмотря на то, что массив
Вас, возможно, удивляет такая "непредусмотрительность" C++, которая выражается в отсутствии встроенных средств динамической проверки на "неприкосновенность" границ массивов. Напомню, однако, что язык C++ предназначен для профессиональных программистов, и его задача — предоставить им возможность создавать максимально эффективный код. Любая проверка корректности доступа средствами C++ существенно замедляет выполнение программы. Поэтому подобные действия оставлены на рассмотрение программистам. Как будет показано ниже в этой книге, при необходимости программист может сам определить тип массива и заложить в него проверку нерушимости границ.