Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C. Тема 1. Раздел 6

.pdf
Скачиваний:
16
Добавлен:
21.03.2016
Размер:
677.87 Кб
Скачать

int table[3][6] =

{

{1, 2,

3, 4,

5,

6},

{7,

8, 9,

0,

1,

2},

{3,

4, 5,

6,

7,

8}

};

char abcd[4] = { 'a', 'b', 'c', 'd' }; char abcd[5] = "abcd";

char abcd[] = "abcd";

Часть 3

Указатель (pointer) – переменная, диапазон значений которой состоит из адресов ячеек памяти и специального значения – нулевого адреса

Указатель «указывает» хранящимся внутри него адресом на ячейку памяти, к которой с его помощью можно обратиться

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

Объявление указателя

TypeName * identifier;

Пример

int * pi; float * pf, f;

double * ps, * pt;

& – определение адреса переменной

Пример

int a, *p; a=3;

p=&a; // Теперь p указывает на a

Пустой адрес обозначается: NULL

unsigned char *c = (unsigned char *)0x8001;

*c = 0x10;

Определим массив int a[10];

Определим указатель int *pa;

Присвоим указатель адресу первого элемента

массива

pa = &a[0];

Получим значение первого элемента массива через указатель

int x = *pa;

Получим указатель на следующий элемент массива

*(pa + 1)

Получим указатель на произвольный элемент

массива

*(pa + i) – это эквивалентно a[i]

Компилятор преобразует ссылку на массив в указатель на начало массива, следовательно:

Имя массива является указательным выражением

Записи pa = &a[0] и pa = a эквивалентны

Записи a[i], *(a + i), *(pa + i) и pa[i]

эквивалентны

Массив можно объявлять, как указатель, а потом пользоваться им, как массивом

Копирование переменной массива приводит к копировании только указателя

Данные массива не копируются

Две переменные массива могут обозначать одни и те же данные

int row[] = { 0, 1, 2, 3, 4 }; int *nextRow;

nextRow = row; nextRow[0] = 8;

Указатель по сути является обычной переменной, которую можно инкрементировать: pa++

Имя массива является константой, поэтому конструкции a = pa, a++ или p = &a неправильны