Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
2
Добавлен:
31.01.2021
Размер:
12.75 Кб
Скачать

Інформатика — Теорія — Визначення об'єктів і типів    Автори

|

Контакти

|

Підсистема допомоги

|

Методичні вказівки

|

Анотація

|

Назад

   ІнформатикаОбласть видимості : Визначення об'єктів і типівЗміст курсу

Вступ

Теорія

Час життя та область видимості

Оголошення функцій

Час життя й область видимості програмних об'єктів

Ініціалізація глобальних і локальних змінних

Визначення об'єктів і типів

Поточна перевірка знань

Область видимості

Версія для друку

  Визначення об'єктів і типів      Як уже говорилося вище, всі змінні використовувані в програмах мовою С, повинні бути оголошені. Тип змінної залежить від того, яке ключове слово використовується як специфікатор типу й чи є описуватель простим ідентифікатором або ж комбінацією ідентифікатора з модифікатором покажчика (зірочка), масиву (квадратні дужки) або функції (круглі дужки).

     При оголошенні простої змінної, структури або об'єднання, а також перерахування, описуватель - це простий ідентифікатор. Для оголошення покажчика, масиву або функції ідентифікатор модифікується відповідним чином: зірочкою ліворуч, квадратними або круглими дужками праворуч.

     Важливою особливістю мови С є той факт, що при оголошенні можна використовувати одночасно більше одного модифікатора, що дає можливість створювати множину різних складних описувателів типів.

     Однак треба пам'ятати, що деякі комбінації модифікаторів неприпустимі:

- елементами масивів не можуть бути функції;

- функції не можуть повертати масиви або функції.

     При ініціалізації складних описувателей квадратні й круглі дужки (праворуч від ідентифікатора) мають пріоритет перед зірочкою (ліворуч від ідентифікатора). Квадратні або круглі дужки мають той самий пріоритет і розкриваються зліва направо. Специфікатор типу розглядається на останньому кроці, коли описуватель уже повністю проінтерпретований. Можна використовувати круглі дужки, щоб поміняти порядок інтерпретації на необхідний.

     Для інтерпретації складних описів пропонується просте правило, що звучить як "зсередини назовні", і складається із чотирьох кроків.

1. Почати з ідентифікатора й подивитися вправо, є чи квадратні або круглі дужки.

2. Якщо вони є, то проінтерпретувати цю частину описувателя й потім подивитися ліворуч у пошуку зірочки.

3. Якщо на будь-якій стадії праворуч зустрінеться закриваюча кругла дужка, то спочатку необхідно застосувати всі ці правила усередині круглих дужок, а потім продовжити інтерпретацію.

4. Інтерпретувати специфікатор типу.

     int * ( * comp [10]) ();

     6 5 3 1 2 4

У даному прикладі оголошується змінна comp (1), як масив з десяти (2) покажчиків (3) на функції (4), що повертають покажчики (5) на цілі значення (6).

     char * ( * ( * var ) () ) [10];

     7 6 4 2 1 3 5

     Змінна var (1) оголошена як покажчик (2) на функцію (3), яка повертає покажчик (4) на масив (5) з 10 елементів, які є покажчиками (6) на значення типу char.

     Крім оголошень змінних різних типів, є можливість оголосити типи. Це можна зробити двома засобами. Перший засіб - указати ім'я тега при оголошенні структури, об'єднання або перерахування, а потім використовувати це ім'я в оголошенні змінних і функцій як посилання на цей тег. Другий - використовувати для оголошення типу ключове слово 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 (операція приведення типу).

 © 2008 ХНУРЭ, Інформатики, Сінельнікова Т.Ф., informatika@kture.Kharkov.uaРозроблено за допомогою LERSUS

Соседние файлы в папке content