Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ11зт / лекции СИ.doc
Скачиваний:
19
Добавлен:
11.06.2015
Размер:
588.8 Кб
Скачать

1.5 Разделители

Разделители, или знаки пунктуации, входят в число лексем языка:

[] () {} , ; : * = #

Квадратные скобки. Для ограничения индексов одно- и многомерных массивов, а также при записи индексированных элементов используются квадратные скобки [ ]. Примеры:

int A[5]; А -одномерный массив из пяти элементов;

int х, е[3][2]; е -двумерный массив (матрица) размером 3x2.

Выражение с индексированными элементами: е[0][0] = х= А[2] = 4; означает, что начальному элементу массива е, переменной х и третьему элементу массива А присваивается значение 4. Так как индексы в массивах всегда начинаются с 0, то элемент А[2] соответствует третьему элементу массива.

Круглые скобки. Назначение круглых скобок ():

1) выделяют выражения-условия (в операторе "если"):

if (х < 0) х = -х;

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

float F(float x, int k) /* Определение функции*/

{ тело_функции }

float F(float, int); /* Описание функции – ее .прототип */

3) круглые скобки обязательны при определении указателя на функцию:

int (*pfunc)( ); /* Определение указателя pfunc на функцию */

4) группируют выражения, изменяя естественную последовательность выполнения операций:

у = (а + b) / с; /*• Изменение приоритета операций */

5) входят как обязательные элементы в операторы циклов:

for (i=0, j=l; i<j; i+=2, j++) тело_цикла;

while ( i<j ) тело_цикла;

do тело_цикла while ( k>0 );

6) необходимы при явном преобразовании типа. Примеры:

long i = 12L; /* Определение переменной */

float brig; /* Определение переменной */

brig = (float)i; /* Явное приведение типа */

brig получает значение 12L, преобразованное к типу float;

Фигурные скобки. Для обозначения соответственно начала и конца составного оператора или блока используют фигурные скобки {}. Пример использования составного оператора в условном операторе:

if (d > x) { d--; x++;}

Пример блока - тело любой функции:

float absx (float x)

{

return x>0.0?x:-x;

}

Обратите внимание на отсутствие точки с запятой после закрывающейся скобки '}', обозначающей конец составного оператора или блока.

Фигурные скобки используются при инициализации массивов и структур при их определении:

/* Инициализация массива: */

int month [ ] ={ 1, 2, 3, 4, 5, б, 7, 8, 9, 10,11, 12 };

Запятая. Запятая может быть использована в качестве операции, а может применяться как разделитель. В последнем случае она разделяет элементы списков. Во-первых, это списки начальных значений элементов массивов и компонентов структур при их инициализации (примеры только что даны).

Другой пример списков - списки формальных и фактических параметров и их спецификаций в функциях.

Третье использование запятой как разделителя - в заголовке оператора цикла:

for (x=pl,y=p2,i=2; i<n; z=x+y; x=y, y=z, i++);

Запятая как разделитель используется также в описаниях и определениях объектов (например, переменных) одного типа:

int i, n ,-

float x, у, z, pi, p2;

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

int i=l, m[ ]={ i, (i=2,i*i), i };

В данном примере запятая в круглых скобках выступает в роли знака операции. Операция присваивания "=" имеет более высокий приоритет, чем операция "запятая". Поэтому вначале i получает значение 2, затем вычисляется произведение i*i, и этот результат служит значением выражения в скобках. Однако значением переменной i остается 2. Значениями m[0], m[1], m[2] будут соответственно 1, 4, 2.

Точка с запятой. Каждый оператор, каждое определение и каждое описание в программе на языке Си завершает точка с запятой ';'. Любое допустимое выражение, за которым следует ';', воспринимается как оператор. Это справедливо и для пустого выражения, т.е. отдельный символ "точка с запятой" считается пустым оператором. Пустой оператор иногда используется как тело цикла. Примеры операторов-выражений:

i++; /* Результат - только изменение Значения переменной i */

F(z,4); /* Результат определяется телом функции с именем F */

Двоеточие. Для отделения метки от помечаемого ею оператора используется двоеточие':':

метка: оператор;

Многоточие. Это три точки '...' без пробелов между ними. Оно используется для обозначения переменного числа параметров у функции при ее определении и описании (при задании ее прототипа). При работе на языке Си программист постоянно использует библиотечные функции со списком параметров переменной длины для форматных ввода и вывода. Их прототипы выглядят следующим образом:

int printf (const char * format,...); int scanf (const char * format,...);

Звездочка Звездочка '*' используется в качестве знака операции умножения и знака операции разыменования (получения доступа через указатель). В описаниях и определениях звездочка означает, что описывается (определяется) указатель на значение использованного в объявлении типа.

Обозначение присваивания. Для обозначения операции присваивания используется символ '='. Кроме того, в определении объекта он используется при его инициализации:

/* инициализация структуры */

struct {char x, int у} А={ 'z', 1918 };

/* инициализация переменной */

int F = 66;

Признак препроцессорных средств. Символ '#' используется для обозначения директив препроцессора. Например:

#include <stdio.h>

#define

Соседние файлы в папке ИТ11зт