- •МАССИВЫ
- •Массивы
- •МАССИВЫ.
- •МАССИВЫ.
- •Инициализация
- •Если элементов в массиве больше, чем
- •Размерность
- •Если при описании массива не ука
- •Для доступа к элементу массива
- •При обращении к элементам массива автоматический контроль выхода индекса за границу массива не
- •Пример:
- •Размерность массива
- •Динамические
- •Динамические массивы нельзя инициализировать при создании, и они не обнуляются!!!
- •Пример:
- •Доступ к элементам динамического массива
- •Альтернативный способ создания динамического
- •Динамические массивы
- •Многомерные
- •Пример:
- •Многомерные массивы
- •При инициализации многомерного массива он представляется
- •Динамические многомерные массивы
- •Более универсальный и безопасный способ выделения памяти под двумерный массив, когда обе его
- •Процессы, происходящие в памяти при выполнении
- •Освобождение памяти из-под
- •Указатель на константу удалить нельзя!!!
- •Для правильной интерпретации
- •Строки
- •СТРОКИ.
- •Строку можно инициализировать
- •Знак равенства перед строковым литералом означает инициализацию,
- •Операция присваивания одной строки другой не определена и
- •Пример :
- •При работе со строками часто используются указатели
- •Более эффективным будет использовать проверку на нуль-символ
- •В приведенном примере, результат операции присваивания —
- •Оба способа работы со строками
- •Распространенные ошибки при работе
- •Строки string не обязательно должны
Пример:
// подсчитывается сумма элементов массива #include <iostream.h>
int main(){
const int n = 10; int i, sum;
int mas[n] = {3, 4, 5, 4, 4};
for (i = 0, sum = 0; i<n; i++) sum += mas[i]; cout << "Сумма элементов: " << sum; return 0; }
Размерность массива |
11 |
Размерность массива |
12 |
|
Можно описать указатель, |
|
|
присвоить ему адрес начала массива |
|
||
и работать с массивом через указатель |
|
||
Пример: |
|
|
|
// программа копирует все элементы массива a в массив b |
|
||
int а[100], b[100]; |
|
|
|
int *pa = а; |
// или int *p = &а[0]; |
|
|
int *pb = b; |
|
|
|
for(int i=0; i<100; i++) |
|
||
*pb++ = *pa++; |
// или pb[i] = pa[i]; |
|
|
|
Размерность массива |
13 |
Динамические
массивы
•Динамические массивы создают с помощью операции new, при этом необходимо указать тип и размерность.
Динамические массивы нельзя инициализировать при создании, и они не обнуляются!!!
15
Пример:
int n = 100; float *р = new float [n];
•создается указатель на float,
•в динамической памяти отводится непрерывная область, для размещения 100 элементов вещественного типа,
•адрес ее начала записывается в указатель р.
Динамические массивы |
16 |
Доступ к элементам динамического массива |
осуществляется точно так же, как к статическим. |
например, к элементу номер 5 приведенного выше массива можно обратиться как
р[5] или *(р+5).
Динамические массивы |
17 |
Альтернативный способ создания динамического |
массива — использование функции malloc |
библиотеки С. |
int n = 100;
float *q = (float *) malloc(n * sizeof(float));
Операция преобразования типа, записанная перед |
|
обращением к функции malloc, требуется потому, что |
|
функция возвращает значение указателя тина void*, а |
|
инициализируется указатель на float. |
|
Динамические массивы |
18 |
Динамические массивы |
19 |
Многомерные
массивы
•Многомерные массивы задаются указанием каждого измерения в квадратных скобках.