Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции C.DOC
Скачиваний:
3
Добавлен:
16.08.2019
Размер:
41.47 Кб
Скачать

6.2 Описание и передача параметров

тип1 параметр1,…

тип1

S (char * str ) { -> S (char *);

Если функция не имеет параметров, то при описании : void имя функции( ).

Передача всех параметров (в том числе и структуры ) по значению, но массивы по ссылке.

Функция может возвращать только сколярные значения и структуры, а массивн. не может.

6.3 main( )

Возврат из функции main( ) - означает завершение программы

return (целое выражение)

Протатип функции main ( );

int main (int argc,char * argv [ ])

argc- всегда имеет значение =>1 и определяет количество элементов в массиве argv[ ]

* argv [ ] - массив указателей на строки

Строки этого массива это разобранная командная строка запуска программы.

6.4 Указатель на функции

Описание:тип возв. значения ( * указатель на функцию) ([список параметров]) ;

int (* cmp_func ) ( void *, void *);

Обращение к указателю

(* указатель на ф. ) ([список факт. параметров]) ж

ПРИМЕР : Универсальная сортировка

void Sort (void*Data , / *массив элементов*/

int Elemsize , / *размер элемента*/

int size / *размер массива * /

int ( * comp_func ) (void *, void * ) / *функция сравнения*

Data - указатель на массив элементов

1 если первый > второго

0 если первый = второму

-1 если первый < второго

struct book {

char A [20];

int Y; год издания

int P;

};

int cmp Book Y (

struct book * F,

struct book * S)

{

if (F -> Y > S -> Y) return (1);

else if (F -> Y < S -> Y)

return (-1);

return (0);

} / * cmp Book Y */

Обращение к функции: struct book M[.....],

Sort (M, sizeof (Struct book), Size ,

& cmp Book Y);

Перемещение по массиву:

(char*) Data = (char*) Data + SizeElem;

7.0 Переименование типов. Классы памяти. Область видимости

7.1 Переименование типов

typedef стар. тип новый тип

typedef int (*rcmpf) (void *,void*);

7.2 Классы памяти:

Область видимости и время существования переменной в СИ определяется классом памяти.

auto /* все локальные переменные блоков * /

1. Registr /* Разновидность автономной переменной */

2.Exterh /* Создание глобалбных переменных */

3. Static /* Изменяет время существования переменных*/

1. С помощьюю нее транслятор переместили в регистр общего назначения для описания переменных нельзя использовать операцию &.

2. Область видимости — еденица трансляции, в которой есть описание этой переменной.

3. Время существования переменной — существование всей программы.

Глобальной переменной считаюся все переменные описанные не внутри какого либо блока. Они являюются по умолчанию Static.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]