Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций_2015.doc
Скачиваний:
36
Добавлен:
03.03.2016
Размер:
532.48 Кб
Скачать

Пример 11.10

/*Список студентов с результатами экзаменов*/

# define KST 35

struct list

{char *fio; int r_l;

int math; int phys;};

struct list group[KST];

Элементам таблицы можно придать значение следующими способами:

  • ввести поэлементно;

  • присвоить поэлементно;

  • инициализировать массив структур.

Второй вариант объявления таблицы:

struct list gr[]=

{{“Андреев”,5,5,5},

{“Большаков”,5,5,4},

{“Якишенко”,5,4,5}}:

11.8 Оператор sizeof.

В Си вычисление размера любого объекта

-) sizeof <обьект>;

-) sizeof(<имя_типа>);

Результат:целое,которое равно размеру в байтах указанного объекта или типа.

Объект:

-)массив;

-)структура.

Имя типа:

-)имя базового типа(int,char,float);

-)имя произвольного типа(структура и указатель).

#define kst (sizeof group) sizeof(struct list) или

#define kst(size group)sizeof(group[0])

11.9 Декларация typedef

Такя декларация позволяет давать новые имена типам данных

Синтаксис:

tupedef <старое имя типа> <новое имя типа>;

Использование:

<тип объявления в typedef> <список объектов>;

Внимание:typedef не создает новый тип,а только синоним для существуещего типа!!!

Пример 11.12

typedef int Exz;

typedef char*String;

typedef struct list

{ Sting fio;

Ekz math;

Ekz phys;

Ekz r_l;

} Liststud;

Liststud group[kst];

Причины использования typedef:

1)“Эстетическая”-одним именем заменяется сложная декларация.

2) Стремление к ясности

struct list*pstr;-указатель на структуру типа struct list

typedef structlist*Plist;

Plist pstr;

Принято имена-синонимы объявлять в typedef с заглавной буквы!!!

3)Машинно-независимые программы.

От реализации зависят:

-)chort,

-)int,

-)long,

-)double,

-)long double.

При переносе на другие ЭВМ(или другую платформу)достаточно будет изменять только размеры с помощью typedef.

12 Функции и структура программы

Вспомогательным подзадачам на этапе разработки метода

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

В языке Си вспомогательным алгоритмам соответствует понятие

функция.

12.1 Определение функции

Синтаксис

<тип_результата> <имя_функции>

([<декларации_аргументов>])

{

<декларации> \ <тело

<иструкции> \ функции>

}

Могут быть опущены:

<тип_результат>~int

<декларация_аргументов>~()

<декларации> в <теле_функции>~нет локальных

переменных

<инструкции>~нет вычисления результатов

пример12.1

/*минимальная функция*/

dummy() {}

12.2 Функции вызывающие и вызываемые

main () a() b()

{ { {

.......... ......... ..........

a() b() }

.......... .........

b() }

}

Опр.

Функция, которая отдаёт управление другой называется

вызывающей, а которая управление получает называется

вызываемой.

В исходном файле Си программы функции могут следовать в

любом порядке.

12.3 Связь между функциями.

Связь между функциями реализуется одним из тех способов:

1. Через аргументы.

2. Через возвращаемые значения.

3. Через внешние переменные.

Через возвращаемые переменные

12.3.1

Вызов функции

<имя функции>(<список аргументов>)

Пример 12.3

/* Вызов printf */

Вызов функции есть выражение , поэтому оно может быть также

использовано в операторах

if (res==printf("как выражение"))

dummy();

else

exit(-1); /*Выход в MS-DOS*/

12.3.2 Инструкция возврата return

Использование

-возвращение результата из вызываемой в вызвавшую

Синтаксис

return <выражение>

return (<выражение>)

Так как это инструкция в конце надо писать ;.

Семантика

Выполняется приведение типа результата вычисляемого

функцией к типу заданному в вызывающей функции

-вызывающая функция может игнорировать то значение ,

которое возвращается из вызываемой функции.

-<выражение> может отсутствовать , тогда функция не

возвращает результата

-return может отсутствовать, тогда функция завершает работу по

достижению символа }

- допускается несколько инструкций возврата, если все они

возвращают значение одного типа.

- если разные return возвращают значения разного типа , то

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