- •Данные Скалярные данные Целые данные: char, short, int, long.
- •Указатели
- •If( целое_выражение )
- •Оператор продолжения цикла
- •Функции
- •Указатели ,строки
- •Структуры, списки.
- •Переименование типов
- •Списки.
- •Работа с файлами
- •6.2 Описание и передача параметров
- •6.4 Указатель на функции
- •7.0 Переименование типов. Классы памяти. Область видимости
- •7.1 Переименование типов
- •7.2 Классы памяти:
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.