Направления программирования. История создания языка Си. Особенности языка, страница 13

Прерывает выполнение операторов цикла и оператора switch. Он может содержаться только в теле этих операторов. Управление передается оператору, следующему за прерванным. Если break записан внутри вложенных операторов do, while, switch он завершает только непосредственно охватывающий его оператор. Если требуется завершить более одного уровня вложений, то требуется оператор goto или return.

п.6.9Оператор возврата return[<выражение>].

Завершает выполнение функции, в которой он содержится, и возвращает управление в вызывающую функцию. Управление передается оператору, следующему за оператором вызова функции.

Значение <выражения> вычисляется, приводится к типу, объявленному для функции и возвращается в вызывающую функцию. Если <выражение>опущено, возвращаемое значение функции неопределенно. <Выражение> принято заключать в ( ), хотя это не является требованием языка.

Если в функции отсутствует оператор return, управление передается по достижении последней закрывающейся }, возвращаемое значение при этом не определенно. Если функция значений не возвращает, ее следует явно объявить с типом void.

п.9.Производные типы.

п.9.1.Массивы.

Массив - один из структурных типов языка Си, все элементы которого имеют один и тот же тип и         расположены в памяти подряд.

Синтаксис объявления:

<тип> <имя массива>[<размер>]

Размер должен быть задан константной. Лучше использовать именованные константы.

Обращение к элементу массива (доступ) организуется следующим образом:

<имя массива>[<индекс>] Указывается имя массива, далее индекс массива.

Первый индекс любого массива в языках Си и Си++ равен 0. В отличии от других языков в программе на Си, Си++ невозможно начать массив начинающийся с 1.Значение индекса меняется от 0 до величины на 1 меньше, чем размер массива. В Ассемблере первый элемент таблицы тоже имеет 0-е значение.

char name[20] – массив символов от 0..19

Пример:

int vect[100],i;

for(i=0;i<100;i++)

scanf(“%d”,&vect[i]);

s=0;

for(i=0;i<100;i++)

s+=vect[i];

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

<тип> <имя массива> [<размер1>][<размер2>]…

Пример:

#define n 10

#define m 20

int matr[n][m];

При объявлении массива его можно инициализировать следующим образом:

1)  Автоматическая инициализация глобального массива нулевыми значениями;

2)  Если указать при объявлении массива static, то он тоже примет нулевые значения;

3)  Явная инициализация элементов массива при объявлении. matr[n]={<список инициализаторов>}

<Список инициализаторов> - последовательность констант, разделенных запятыми. Если в списке инициализаторов меньше элементов, чем размерность массива, оставшиеся элементы неявно инициируются нулями.

Пример:

а) int vect[3]={1,2,3};

б) int matr[3][2]={{1,2},{3,4},{5,6}};

в) int matr[3][2]={{0}}; - обнуление элементов массива

4)  Данные могут быть присвоены или скопированы в момент выполнения программы.

Компилятор отводит под массив память размером (sizeof(<тип>)*<размер массива>)байтов.

Замечание: При использовании языка Си ответственность за проверку выхода за границу массива полностью лежит на программисте. Компилятор не сможет диагностировать ошибку такого рода. ОС тоже не выявит ошибку.

 п.9.2.Структура.

Структура – это пользовательский тип данных, элементы которого могут иметь различный тип.

Синтаксис объявления:

1)  struct[<идентификатор типа>]

{<список полей>}<идентификатор>[ ,<идентификатор>]

2)  struct<идентификатор типа> <идентификатор>[ ,<идентификатор>]

Во втором случае <идентификатор типа> ссылается на структурный тип, объявленный в другом месте программы.<Список полей> - список одного или более объявлений переменных являющихся элементами структуры.

Пример:

1) struct stud

{

char name[20];

int age;

}r1,r2;

2) stud  r1,r2;