Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lektsii_Kara-Ushanova.doc
Скачиваний:
27
Добавлен:
22.02.2015
Размер:
326.14 Кб
Скачать

22.Данные типа указатель

Указатель представляет собой переменную, значением которой является адрес другой переменной.

С помощью указателей можно осуществлять косвенную адресацию

<тип>*<указатель>

int *p

void *v – неопр тип.

Указатели могут ссылаться на переменные, указатели, массивы, функции.

char * const p – ссылка на неизвестный адрес

const char *p - ссылка на неизменную переменную

Операции:

  1. Операция обращения по адресу

  2. Адресация

<тип> <переменная> int *x

<тип>*<указатель> int *px

Выражения с указателями:

int x,y;

int *px, *py;

px = &x;

py = &y;

*px = 1 <=> x = 1

y = *px + 1

*px+ = 1 <=> x = x + 1

(*px)++

Операции

  1. Присваивание py = px

  2. Сравнение:

равенство ==

неравенство !=

  1. Арифметические ++ ; -- ; + ; -

  2. Преобразования типа

void *vp vp = &i ; *(int*)vp) -> 123

int i = 123

float f = 123,45 vp = &f ; *(float*)vp) -> 123,45

char = 'a'

23.Массивы

Массивы – это множество упорядоченных однородных элементов данных.Массивы:1.Статические – память выделяется заранее до исполнения программы2. Динамические – память выделяется в процессе исполнения программы

Спецификация массивов:

<тип> <имя> [<размер>] = { <начальные значения> }

Доступ к массиву:

по индексу (по порядковому номеру)

mt a[s];

a[i];

a[i++];

a[2];

Нумерация начинается с нуля

int a[5] = {5,4,3,2,1}

float data[3] = {1.2, 1.3, 1.4}

Имя массива по существу является константой-указателем на адрес памяти, в которой расположен массив.

Двумерный массив:

<тип> <имя> [<размер>] = { <начальные значения> }

int matr[2][3];

В памяти элементы располагаются так, что последний индекс меняется быстрее, первый – медленнее.

Двумерный массив рассматривается как массив одномерных массивов.

M[i][j]

int m[2][3] = {{1,2,3}, {4,5,6}}

Доступ к элементам массива. Указатели и массивы.

int a[5];

a[0], a[1], a[2], a[3], a[4]

Размещаются в соседних ячейках оперативной памяти.

а – указатель на a0

a <-> &a[0]

2 способа доступа

  • a[i]

  • *(a+i)

  • a -> a[0]

  • a+1 -> a[1]

  • a+2 -> a[2]

int *pa;

pa = a; <=> pa = &a[0]Для многомерных массивов:M[i][j] *(*(m+i)+j) *(pa+i*N+j) n – число столбцов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]