Программирование >>  Программирование на языке c++ 

1 ... 147 148 149 [ 150 ] 151 152 153 ... 159


ПРИЛОЖЕНИЕ

1. Структура и основные конструкции языка С

1.1. Структура языка. При рассмотрении структуры языка С будут использоваться некоторые понятия из языка С++. Назовем объектом некоторую область памяти компьютера, которая имеет имя (т. е. к ней можно обратиться). В этой памяти может храниться некоторое значение или набор значений. Каждый объект имеет тип, который определяется либо в самом языке (целый, символьный и т. п.), либо пользователем (в случае создания, например, нового класса).

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

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

Важным понятием языка является область действия идентификатора (задающего имя объекта), т. е. часть программы, в которой идентификатор существует и может быть использован. В языке С различают четыре такие области:

>- блок (локальная область), в котором область действия идентификатора начинается от точки его объявления и



заканчивается в конце блока. Примером блока является тело функции. Вообще говоря, блок - это список (возможно пустой) инструкций языка С, заключенных в фигурные скобки ({});

4- функция, задающая область действия меток (и только меток). Метки можно использовать в операторе goto в любом месте функции, в которой они заданы. Метка label объявляется (задается) в виде label:. Каждая метка должна иметь уникальное имя;

4- прототип функции определяет область действия идентификаторов, заданных в виде параметров функции. Эта область заканчивается в конце объявления прототипа, которое задается в виде:

тип возвращаемого значения function

(объявления параметров);

Здесь для функции function задается тип каждого ее параметра;

4 файл (глобальная область) включает все объявления вне блоков. Эта область имеет границы от объявления до конца файла.

Язык C-I-I- вводит дополнительную пятую область, называемую классом. Область действия компонентов класса была подробно рассмотрена в предыдущих главах.

Объекты могут размещаться в статической, локальной или динамической памяти. Статическая память обычно выделяется в специальных сегментах. В ней, например, размещаются объекты функции. Локальная память создается в стеке (или в регистрах процессора). Динамическая память вьщеляется и освобождается с помощью специальных операторов (например, new и delete) в языке C+-I-. Она размещается в области, называемой free store (свободная память) или heap (куча).

Статическая память задается либо по умолчанию, либо с помощью спецификатора static, например static int а; . Диаметрально противоположным по отношению к ключевому слову static является спецификатор extern, задающий внешнюю память, в которой размещаются объекты, допускающие внешнюю компоновку. Локальная память специфицируется ключевым словом auto, причем все объекты, объявленные в блоке, специфицируются как auto объекты по умолчанию



(локальную память можно также определить с помощью ключевого слова register).

1.2. Типы данных и константы. В языке С различают понятия тип данных и модификатор типа. Тип данных - это, например, целый (int), а модификатор - со знаком или без знака (signed или unsigned). Различают пять следующих базовых типов: char - символьный, int - целый, float - вещественный, double - вещественный двойной точности и void - не имеющий значения. Объект некоторого базового типа может быть модифицирован. С этой целью используются специальные ключевые слова, называемые модификаторами (они записываются перед спецификатором типа, например unsigned char). К модификаторам относятся: unsigned (беззнаковый), signed (знаковый), short (короткий), long (длинный).

Наряду с базовыми типами (без модификаторов или с модификаторами) в языке могут объявляться производные типы, к которым относятся указатели (см. приведенный ниже пример), ссылки, массивы и функции. Следующая программа демонстрирует объявление и использование переменных различных типов:

#include <values.h> задает константы типа MAXINT и

MAXLONG

#include <iostream.h> void main()

{ int a=MAXINT; MAXINT - максимальное значение целого типа char b=W объявление и описание символьной

переменной unsigned c=60000LI; с - беззнаковая целая переменная long d=MAXLONG; MAXLONG - максимальное

значение типа unsigned long e=10000000UL; е - беззнаковая длинная

целая

float f=12.78F; f - вещественная переменная

double g=.34e12; 9 - вещественная переменная

двойной точности long double h=7468746784.; h имеет большую, чем g,

точность



1 ... 147 148 149 [ 150 ] 151 152 153 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика