
- •Лексемы
- •Идентификаторы
- •Константы
- •Операции
- •Знаки пунктуации
- •Основные типы данных.
- •Описание переменных
- •Оператор присваивания
- •Примеры программ
- •Форматированный ввод, вывод
- •Особенности ввода, вывода символов
- •Функции gets, puts, atoi, atol и atof
- •Занятие 2. Операторы выбора.
- •Выражения, операции
- •Логические операции
- •Условная операция
- •Условный оператор
- •Оператор перехода goto
- •Оператор выбора switch
- •Оператор цикла с предусловием (while)
- •Оператор цикла с постусловием (do - while)
- •Оператор цикла for
- •Примеры использования операторо цикла
- •Занятие 3. Указатели. Ссылки. Массивы. Работа со строками.
- •Указатели
- •Операции разыменования и взятия адреса
- •Инициализация указателей
- •Арифметические операции с указателями
- •Присваивание указателей
- •Сравнение указателей
- •Операция new
- •Операция delete
- •Примеры использования указателей
- •Одномерные массивы
- •Инициализация одномерных массивов
- •Примеры работы с одномерными массивами
- •Многомерные массивы
- •Занятие 4. Указатели и массивы.
- •Указатели и одномерные массивы
- •Размещение одномерных массивов в динамической памяти.
- •Массивы указателей
- •Занятие 5. Указатели и многомерные массивы.
- •Двухмерный массив и вспомогательный массив указателей
- •Список рекомендуемой литературы.
Одномерные массивы
Массив представляет собой набор данных одного типа.
float A [5] = {-0.6, 9.7, 3, 6, 0} – массив из пяти элементов типа float.
Чтобы объявить массив, нужно указать его тип, имя и размер. Размер задается числом, взятым в квадратные скобки. Описание массива имеет следующий вид:
тип_данных имя_массива[размер_массива];
Отметим, что размер массива должен быть задан константным выражением. Это связано с тем, что память под массив выделяется в процессе компиляции, и ее размер должен быть заранее определен. Если необходим массив, размер которого заранее неизвестен, то нужно использовать динамическое выделение памяти. Этот материал будет рассмотрен на последующих занятиях.
Примеры объявления массивов.
float x[5]; //Объявление массива x из 5 элементов вещественного типа
y[10]; // Объявление массива y из 10 элементов вещественного типа
int a[7]; // Объявление массива a из 7 элементов целого типа
Элементы массива размещаются в памяти последовательно, друг за другом. Для доступа к элементу массива используется имя массива, за которым следует номер элемента (индекс) в квадратных скобках. Индексом может быть только целая положительная константа или выражение целого типа. Индексирование элементов массива начинается с 0, а не с 1. При обращении к элементам массива автоматический контроль выхода индекса за границу массива не производится, что может приводить к ошибкам.
Примеры доступа к элементам одномерного массива.
1) x[0]- первый элемент одномерного массива x,
2) a[5]- шестой элемент массива а,
3) y[2*i-1]-здесь индекс массива является выражением, которое зависит от значения пере-менной i.
Инициализация одномерных массивов
Инициализацию массива можно проводить одновременно с его объявлением. Для этого после объявления массива вместо ; нужно поставить знак = и в фигурных скобках через запятую указать значения элементов массива.
Примеры инициализации одномерных массивов.
1) int a[5] = {1,2,3,4,5}; // a[0]=1, a[1]=2,…, a[4]=5
2) double b[]={2.1,3.0,1.12,4.44}; // Если размер массива не указан, то компилятор автоматически его вычислит по списку значений элементов
3) int с[4]={10,20};// с[0]=10, c[1]=20, значения остальных элементов массива не устанавливаются, они могут содержать любой мусор.
Размерность массива вместе с типом его элементов определяет объем памяти, необходимый для размещения массива. Если при объявлении массива не указана размерность, должен присутствовать инициализатор, в этом случае компилятор выделит память по количеству инициализируемых значений. Если при этом нужно будет установить размерность массива, то это можно сделать так:
const int n;
float x[]={1.1,2.2,3.3,4.4}; // Инициализация массива из 4 элементов
n = sizeof(x)/sizeof(x[0]); // Размер массива x делится на размер элемента массива
Размерность массива предпочтительнее задавать с помощью именованных констант, поскольку при изменении размерности придется вносить коррективы только в одном месте. Необходимо помнить, что попытка присвоить значение несуществующему элементу массива (то есть имеющему индекс больше, чем размерность массива минус 1) может приводить к непредсказуемым последствиям, так как это значение будет занесено в ячейку памяти с другими данными, и те будут безнадежно испорчены.
Для задания элементов массива нужно….
# include <stdio.h>
# include <time.h>
# include <stdlib.h>
void main()
{
float array[3];
srand(time(NULL));
for (int i = 0; i<3; i++)
{
array[i] = float(rand())/RAND_MAX;
printf("%3.2f\n", array[i]);
}
}