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

41) Указатели на структуры. Средство typedef (в2б11)

Указатели на структуры.

Формат указателя на структуру:

struct имя_стуктурного_типа*имя_указательной_

пременной;

Доступ к элементам структурчерез указатели будет осуществляться следующим образом:

(*имя_указательной_пременной).элемент

или

имя_указательной_пременной-> элемент

Пример:

struct key *pts; // объявляем указатель на структуру key

Обращение к элементe count структуры key может осуществляться следующим образом:

(*pts).count или же pts->count.

Средство typedef

Кроме объявлений переменных различных типов, имеется возможность объявить типы. Это можно сделать двумя способами. Первый способ - указать имя тега при объявлении структуры, объединения или перечисления, а затем использовать это имя в объявлении переменных и функций в качестве ссылки на этот тег. Второй - использовать для объявления типа ключевое слово typedef.

При объявлении с ключевым словом typedef идентификатор, стоящий на месте описываемого объекта, является именем вводимого в рассмотрение типа данных, и далее этот тип может быть использован для объявления переменных. Отметим, что любой тип может быть объявлен с использованием ключевого слова typedef, включая типы указателя, функции или массива. Имя с ключевым словом typedef для типов указателя, структуры, объединения может быть объявлено прежде чем эти типы будут определенны, но в пределах видимости объявителя.

Примеры:

typedef double (* MATH)( );

/* MATH - новое имя типа, представляющее указатель на функцию, возвращающую значения типа double */

MATH cos;

/* cos указатель на функцию, возвращающую

значения типа double */

//Можно провести эквивалентное объявление

double (* cos)( );

typedef char FIO[40]

// FIO - массив из сорока символов

FIO person;

//Переменная person - массив из сорока символов

//Это эквивалентно объявлению

char person[40];

При объявлении переменных и типов здесь были использованы имена типов (MATH FIO). Помимо этого, имена типов могут еще использоваться в трех случаях: в списке формальных параметров, в объявлении функций, в операциях приведения типов и в операции sizeof (операция приведения типа).

Именами типов для основных типов, типов перечисления, структуры и смеси являются спецификаторы типов для этих типов. Имена типов для типов указателя массива и функции задаются при помощи абстрактных описателей следующим образом:

спецификатор-типа абстрактный-описатель;

Абстрактный-описатель – это описатель без идентификатора, состоящий из одного или более модификаторов указателя, массива или функции. Модификатор указателя (*) всегда задается перед идентификатором в описателе, а модификаторы массива [] и функции () - после него. Таким образом, чтобы правильно интерпретировать абстрактный описатель, нужно начать интерпретацию с подразумеваемого идентификатора. Абстрактные описатели могут быть сложными. Скобки в сложных абстрактных описателе задают порядок интерпретации подобно тому, как это делалось при интерпретации сложных описателей в объявлениях.

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