Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по программированию и основам алгоритмизации.doc
Скачиваний:
48
Добавлен:
02.05.2014
Размер:
187.39 Кб
Скачать
  1. Операции с указателями.

  1. Оп. разадресации(*)-косвенное обращение к объекту. Оп.разадр-ии предназначены для доступа к величине адрес кот хранится в ук. Эту опер. можно исп. как для получ. так и для изменен. знач. величины.

пример:

int a=5,b,d;

int*pti=&a;

….

b=*pti;d=pti+2;

cout<<b<<d;

  1. Арифм. оп.

Арифм оп. с ук. автоматич. учитывают размер типа величин адресных ук.

Единицей измерения значения ук. явл.размер соответсв.ему типа. Эти оп. примен. в основном при работе со структурами данных последовательно размещённых в пам.(пр.:массивы). Если ук. на определённый тип увел. или умен. на константу его значение изм на величину этой конст. умноженную на размер объекта данного типа. Разность 2-х ук.-это разность их знач. делённая на размер типа в байтах. Суммирование ук. не допускается. Инкремент перемещает ук.к след.элем. масс., декремент – к предыдущ.

  1. Сравнивание ук.

Допускается только для ук. одного типа.

  1. Взятие адреса

Применимо к величинам имеющим имя и размещённым в оперативной памяти.

  1. Указатели и массивы. Массив как параметр функции.

Имя масс. обозн. как ук.-константа на массив. В массиве int x[10] x-ук. на нулевой элемент масс-ва, т.е. x=&x[0]. Поэтому для доступа к элементам масс., кроме индексированных имён можно использовать разадрессованные ук.: имя[индекс]*(имя+индекс) (пр:x[i]*(x+i))

Т.к. имя масс. явл. ук.- константой, то его нельзя изм. в прогр., т.е. ему нельзя ничего присвоить.

Мас. как параметр ф-ии

При исп. в качестве парам масс-ва в ф-ию передаётся ук.на его первый элемент, т.е. масс.всегда передаётся по адресу. При этом инф. о кол-ве элем. масс. теряется и следует передавать его размерность ч/з отдельные парам. Передать масс. в ф-ию можно след. сп.:

1)func(int a[N],int N)

2)func(int a[], int N)

3)func(int *a, int N)

  1. Динамические массивы.

Дин. масс. применяются если до начала работы прогр. неизв.сколько в масс.элем-в. Пам. под них выделяется с пом. операции new.

В дин. обл.пам.(heap) во время вып.прогр. Адр.её начала запис-ся в ук.(пр:int n=10; int*a=new int[n]//в дин.пам.выд.обл.пам.дост-я для размещ.10 элем.типа int.

Дин.мас-ы нельзя при созд. иниц-ать. и они не обнуляются.

Преимущество дин.мас.-размерность может быть переменной, т.е. объём пам. выд-ой под масс.определяется на этапе выполнен.прогр.

Обращение к элементу дин.мас.осущ. так же как к элементу обычного (a[3] или *(а+3)

Если дин. масс. в к-то момент работы прогр. больше не нужен необходимо освободить область пам. кот.он занимает с пом. операции delete[]a;

Для созд.дин.многомер.мас. необходимо указать в операции new все его размерности. Самая левая (первая) размерность может быть переменной.

пример:

int nstr=5;

int **m=(int**)new int[nstr][10];

или

int n;

cout int m=5;

cin>>n;

int(*a)[m]=new int[n][m];

Более универсальный способ выделения пам.под 2-мерн.мас., когда обе его размерности задаются на этапе выполнения прогр. Освобождение пам. из под мас. с любым кол-вом изменений вып. с пом. оп delete[].