
- •1.K&r c. Ansi c и iso c. Стандарт c99
- •Структура компилятора
- •3.Проблемы использования языка Си.
- •5.Числовые константы. Символические константы.
- •6.Идентификаторы. Константные переменные. Основные типы.
- •7.Указатели. Ссылки. Изменение типа данных.
- •8.Одномерные массивы. Символьные массивы.
- •9.Многомерные массивы.
- •10.Структуры.
- •11.Ключевое слово union.
- •12.Переименование типов (typedef).
- •13.Выражения.
- •14.Арифметические операции. Логические операции.
- •15.Операции присвоения.
- •16.Операции отношения. Адресные операции.
- •Адресные операции
- •17.Операции “?:”, sizeof, (тип)
- •18.Составной оператор. Оператор-выражение.
- •19.Условный оператор if. Оператор-переключатель switch. Условный оператор if
- •If (условие) оператор_1; else оператор_2;
- •If (условие) { оператор_1; оператор_2; … }
- •Оператор варианта switch
- •20.Операторы циклов while и do-while.
- •21.Оператор цикла for. Оператор продолжения continue.
- •22.Определение функции. Оператор возврата return. Вызов функции.
- •23.Функция main.
- •24.Поименованные константы и замена идентификаторов. Макросы.
- •If (выражение)
- •25.Включение файлов. Условная компиляция. Включение файла
- •26.Команда error. Команда pragma.
- •27.Обработка особых ситуаций. Обработка try, перехват catch, Спецификация особой ситуации throw.
- •28.Функции-подстановки (inline).
- •29.Операция создания объекта new. Операция delete. Операция new
- •Операция delete
- •30.Инкапсуляция. Наследование.
- •31.Полиморфизм.
- •32.Классы. Члены класса.
- •33.Конструктор. Деструктор. Функции-члены.
- •34.Операция доступа к области видимости “::”. Указатель this.
8.Одномерные массивы. Символьные массивы.
Конечная именованная последовательность однотипных вели
чин называется массивом. Описание массива в программе отличается от описания простой переменной наличием после имени квадратных скобок, в которых
задается количество элементов массива (размерность):
f!oat а [10]; // описание массива из 10 вещественных чисел Элементы массива нумеруются с нуля. При описании массива используются те
же модификаторы (класс памяти, const и инициализатор), что и для простых переменных. Инициализирующие значения для массивов записываются в фигур
ных скобках. Значения элементам присваиваются по порядку. Если элементов в
массиве больше, чем инициализаторов, элементы, для которых значения не указаны, обнуляются:
int b[5] = {3. 2. 1}; // b[0]=3. b[l]=2. b[2]=l. b[3]=0. b[4]=0
Размерность массива вместе с типом его элементов определяет объем памяти, не
обходимый для размещения массива, которое выполняется на этапе компиляции,
поэтому размерность может быть задана только целой положительной константой или константным выражением. Если при описании массива не указана раз
мерность, должен присутствовать инициализатор, в этом случае компилятор вы
делит память по количеству инициализирующих значений. В дальнейшем мы
увидим, что размерность может быть опущена также в списке формальных параметров (см. раздел «Параметры функции», с. 77).
Для доступа к элементу массива после его имени указывается номер элемента
(индекс) в квадратных скобках. В следующем примере подсчитывается сумма
элементов массива.
#include <1estream.h>
int ma1n(){
const int n = 10;
int i. sum;
int marksCn] = {3. 4. 5. 4. 4};
for (1 = 0. sum = 0; 1<n; 1++) sum += marks[1];
cout « "Сумма элементов; " « sum;
return 0;
}
Размерность массивов предпочтительнее задавать с помощью именованных констант, как это сделано в примере, поскольку при таком подходе для ее изменения достаточно скорректировать значение константы всего лишь в одном месте
программы. Обратите внимание, что последний элемент массива имеет номер, на
единицу меньший заданной при его описании размерности. Строки
Строка представляет собой массив символов, заканчивающийся нуль-символом.
Нуль-символ — это символ с кодом, равным О, что записывается в виде управ
ляющей последовательности 40'. По положению нуль-символа определяется
фактическая длина строки. Строку можно инициализировать строковым литера
лом (см. с. 20):
char str[10] = "Vasia";
// выделено 10 элементов с номерами от О до 9
// первые элементы - 'V. 'а', 's'. '1*. 'а'. '\0'
В этом примере под строку выделяется 10 байт, 5 из которых занято под символы
строки, а шестой — под нуль-символ. Если строка при определении инициализируется, т.е размерность можно опускать (компилятор сам выделит соответствую
щее количество байт):
char str[] = "Vasia": // выделено и заполнено 6 байт
Оператор
char *str = "Vasia"
создает не строковую переменную, а указатель на строковую константу, изменить которую невозможно (к примеру, оператор str[l]='o' не допускается). Знак равенства перед строковым литералом означает инициализацию, а не присваивание. Операция присваивания одной строки другой не определена (поскольку
строка является массивом) и может выполняться с помощью цикла или функций
стандартной библиотеки. Библиотека предоставляет возможности копирования,
сравнения, объединения строк, поиска подстроки, определения длины строки
и т. д.