Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ_ПО_ПРОГРАММИРОВАНИЮ_ПРЕПОД_3403_220301.doc
Скачиваний:
27
Добавлен:
06.11.2018
Размер:
845.31 Кб
Скачать

2.2 Распределение памяти программы.

Скомпилированная программа Си имеет четыре логически обособленные области памяти:

область стека для хранения переменных (адресов возврата функций, аргументов функций, локальных переменных и др.)

область динамически распределяемой памяти (куча)

область глобальных переменных

область исполняемого кода программы

2.3 Некоторые основные понятия.

Идентификаторы – это имена переменных, констант, функций, меток и т.п. Внешние идентификаторы (имена функций и глобальных переменных, участвующих в процессе компоновки) согласно ANSI/ISO C99 имеют длину до 31 символа. Внутренние идентификаторы (не участвующие в процессе компоновки) согласно ANSI/ISO C99 имеют длину до 63 символов. В C++ минимальная длина любого идентификатора 1024 символа. Верхние и нижние регистры символов рассматриваются как различные. Следовательно, count, Count и COUNT – это три разных идентификатора. Идентификатор не может совпадать с ключевым словом языка Си или с именем библиотечной функции. По традиции переменные обозначаются строчными буквами, а константы прописными.

Функция main() – функция, с которой всегда начинается выполнение программы.

Круглые скобки () – признак функции. В общем случае в скобках может передаваться входная информация (входные аргументы).

Фигурные скобки {} – отмечают начало и конец тела функции или блока (совокупности) операторов. Фигурные скобки в языке Си аналогичны операторам begin и end в языках Паскаль, Алгол.

Комментарии /* Я комментарий */ Комментарии записываются между символами /* */ и могут занимать отдельную строку или ту же строку, что и операторы.

2.4 Данные.

Базовые типы данных;

  • char- символьные;

  • int - целые;

  • float – с плавающей точкой;

  • double – с плавающей точкой двойной длины;

  • void – пустой, не имеющий значения.

Тип void представляет пустое множество значений и используется для указания типа функций, не возвращающих значения.

Модификаторы типов данных:

  • signed - знаковый;

  • unsigned - беззнаковый;

  • long - длинный;

  • short - короткий.

Основные типы данных получаются путем сочетания базовых типов данных и модификаторов типов данных.

Сложные типы данных:

  • массивы;

  • указатели;

  • struct – структуры;

  • enum – перечисления;

  • union – объединения;

  • typdef – собственные типы данных (переопределения типов данных).

ОСНОВНЫЕ ТИПЫ ДАННЫХ.

ТИП ДАННЫХ

РАЗМЕР БИТЫ (БАЙТЫ)

ИНТЕРВАЛ ИЗМЕНЕНИЯ

ОТ

ДО

сhar

1(8)

-128

127

signed char

1(8)

-128

127

unsigned char

1(8)

0

255

int

2(16)

-32768

32767

signed int

2(16)

-32768

32767

unsigned int

2(16)

0

65535

short int

2(16)

-32768

32767

signed short int

2(16)

-32768

32767

unsigned short int

2(16)

0

65535

long int

4(32)

-2147483648

2147483647

signed long int

4(32)

-2147483648

2147483647

unsigned long int

4(32)

0

4294967295

float

4(32)

3.4E-38

3.4E+38

double

8(64)

1.7E-308

1.7E+308

long double

10(80)

3.4E-4932

3.4E+4932

Целые константы.

  • Десятичные целые константы определены как последовательности десятичных цифр, начинающиеся не с нуля (если это не число нуль). Например: 584, 0, 1024.

  • Восьмеричные целые константы определены как последовательности десятичных цифр, начинающиеся с нуля и не содержащие десятичных цифр, старших семи. Например: 016 (0168=1410).

  • Шестнадцатеричные целые константы определены как последовательности цифр (1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F), начинающиеся с 0x или 0X. Например: 016 (01616=2210).

Вещественные константы.

Вещественные константы представлены в памяти ЭВМ в форме с плавающей точкой. Например: 44., 3.1415E1, 45e0, 0.0.

Перечисляемые константы (enum).

Enumeration – перечисление.

Перечисляемые константы вводят целые именованные константы:

enum DAY{SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};

enum BOOLEAN{NO, YES};

Если в списке нет ни одного элемента со знаком =, то значения констант начинаются с нуля и увеличиваются на единицу слева направо. Поэтому SUNDAY=0, FRIDAY=5, NO=0, YES=1.

enum {ONE=1, TWO, THREE, FOUR};

Если в списке есть элемент со знаком =, то значения констант начинаются с этого значения и увеличиваются на единицу слева направо. Поэтому TWO=2, THREE=3, FOUR=4.

Символьные константы (символы).

Символьные константы используются для изображения отдельных знаков, имеющих индивидуальные коды. Каждая символьная константа – это лексема (единица текста программы, которая при компиляции программы воспринимается, как единое целое и не может быть разделена на более мелкие элементы), которая состоит из символа и ограничивающих апострофов. Например: ‘A’, ‘a’, ‘8’, ‘+’, ‘,’, ‘&’.

Строковые константы.

Строковые константы определяется как последовательность символов, заключенная в двойные кавычки: ”Строковая константа”.

ПРИМЕЧАНИЕ: См. 4. СТРОКИ И СТРОКОВЫЕ КОНСТАНТЫ.

Константа нулевой указатель (Null – указатель).

Нулевой указатель неарифметическая константа (см. указатели).

Специальные символьные константы.

СПЕЦИАЛЬНЫЕ СИМВОЛЬНЫЕ КОНСТАНТЫ

(символы с обратным слэшем (backslach), управляющие последовательности, ESC – последовательности).

‘\n‘

Перевод строки

‘\t‘

Горизонтальная табуляция

‘\r‘

Возврат курсора к началу строки

‘\\‘

Обратная косая черта

‘\‘‘

Апостроф (одинарная кавычка)

‘\”‘

Двойная кавычка

‘\0‘

Нулевой символ

‘\a‘

Сигнал –звонок

‘\b‘

Удаление предыдущего символа

‘\f‘

Перевод страницы

‘\v‘

Вертикальная табуляция

\?‘

Знак вопроса

‘\ddd‘

Восьмеричное представление символьной константы

d – восьмеричная цифра от 0 до 7

‘\xhh‘

‘\Xhh‘

Шестнадцатеричное представление символьной константы

H – шестнадцатеричная цифра от 0 до F

Переменные в языке Си должны быть всегда объявлены до их первого использования. Локальные переменные объявляются внутри функций. Формальные переменные объявляются в определении параметров функции. Глобальные переменные объявляются вне всех функций. При объявлении указываются:

  • список переменных,

  • тип переменных,

  • класс памяти переменных.

Инициализаторы.

Для присваивания начальных значений переменным при их определении используются инициализаторы.

Инициализаторы имеют форму:

= значение;

= {список значений}; /* сложные значения */

Например:

int i=0;

int j=0; k=0;

static float eps=0.0001;

int year[12]={31,28,31,30,31,30, 31,31, 30,31, 30,31};

Статическим и внешним переменным по умолчанию присваиваются нулевые значения.

Автоматическим переменным по умолчанию никаких значений не присваивается.

Инициализатор может быть вложенным:

Float matrix[4][3]={

{1.0, 1.0, 1.0}

{2.0, 2.0, 2.0}

{3.0, 3.0, 3.0}

{4.0, 4.0, 4.0}

};

Классы памяти данных:

  • auto – автоматический;

  • static – статический;

  • extern – внешний;

  • register – регистровый.

В некоторых случаях объявление класса памяти необязательно, но всегда желательно. По умолчанию класс памяти – auto.