Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Уровень 1




ОПЕРАТОРЫ. ДОПОЛНЕНИЕ

В этом разделе рассматривается полный перечень операторов языка C, указывается приоритет и порядок выполнения каждого из них. Это связано с тем, что в разделе 4 были приведены не все операторы языка. Операторы языка Basic ранее были рассмотрены практически полностью и поэтому не обсуждаются.

Каждый оператор характеризуется: числом операндов, уровнем (приоритетом) и порядком выполнения. По числу операндов операторы делятся на одноместные (унарные), двуместные (бинарные) и трехместные (тернарные). Уровень 1 означает наибольший приоритет. Порядок выполнения операторов одного уровня может быть слева направо (à) и справа налево (ß).

Порядок выполнения: à

Операторы: () [ ]. ->

Первые два оператора означают: (...) – список аргументов процедуры, [...] – индексирование (вычисление индексного выражения).

Пример.

int *(*(*x)[6])(); // Указатель на массив из 6 указателей на функцию, возвращающей указатель на int.

Два последних оператора реализуют обращение к элементу структуры, причем оператор -> использует указатель на структуру.

Первый вариант обращения имеет вид:

<имя_структуры>. <имя_элемента или подструктуры> [. <имя_элемента или подструктуры>]...

Пример. Структура, описывающая произвольную дату.

struct date{

int day; // День месяца

int month; // № месяца

int year; // Год

int year_day; // № дня в году

char mon_name[4];// Краткое название месяца

}data;

..............................................

data.year // Извлекается значение года

data.mon_name[2] // 3-я буква названия месяца

Пример. Объявление типа структуры (память не выделяется).

#define NameSize 25

#define AddrSize 40

...................................

struct person{

char name[NameSize]; // Фамилия И.О. студента

char address[AddrSize]; // Адрес

struct date birthdate; // Дата рождения

struct date insdate; // Дата поступления в институт

};

Размеры символьных массивов задаются с помощью символических констант. В качестве элементов структуры person используется ранее объявленный тип структуры date.

Определение переменной типа person:

struct person student;

Обращение к элементу структуры может иметь вид:

student.birthdate.month // Месяц рождения студента

Те же типы структур можно объявить с помощью инструкции определения типа typedef. Более того, такой способ является предпочтительным, поскольку при определении переменных не надо употреблять ключевое слово struct.

Пример.

typedef struct {

int day;

int month;

int year;

int year_day;

char mon_name[4];

} date;

typedef struct {

char name[NameSize];

char address[AddrSize];

date birthdate, insdate;

} person;

Определение переменных:

person student;

date *pd;

Обращение к элементу структуры имеет тот же вид, что и ранее:

student.birthdate.month

Для того, чтобы при обращении к элементу структуры использовать указатель и оператор ->, необходимо задать ему значение. Это можно сделать, например, так:

pd=&student.birthdate;

Тогда допустимо обращение вида:

(*pd).year

или

pd->year




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 363; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.173 сек.