![](/user_photo/64119_0mZzG.jpg)
- •Типы данных в C
- •Целые типы данных
- •Знаковые и беззнаковые типы
- •Вещественные типы данных
- •Вычисление арифметических выражений
- •Указатели
- •Выражения, содержащие указатели
- •Преобразование типов указателей
- •Адресная арифметика
- •Пример использования указателей
- •Перечислимый тип
- •Тип void
- •Структура программы на языке C
- •Функция пользователя
- •Функция, не возвращающая значение
- •Функция с параметрами, возвращающая значение
- •Массивы
- •Доступ к элементу массива
- •Примеры
- •Обращение к элементу одномерного массива с помощью переменной- указателя
- •Двумерный массив
- •Доступ к элементу двумерного массива с помощью указателей
- •Комбинированные способы обращения к элементам двумерного массива
- •Задача
- •Параметры функции
- •Передача параметра-значения
- •Передача параметра-указателя
- •Передача параметра-ссылки
- •Пердача в функцию одномерного массива
- •Задача
- •Генератор случайных чисел
- •Решение задачи (1)
- •Решение задачи (2)
- •Решение задачи (3)
- •Решение задачи (4)
- •Решение задачи (5)
- •Результат работы программы
- •Передача в функцию двумерного массива
- •Задача
- •Решение задачи (1)
- •Решение задачи (2)
- •Решение задачи (3)
- •Решение задачи (4)
- •Решение задачи (5)
- •Объявление пользовательского типа
- •Методы программирования
- •Конструирование программы для обработки двумерного массива
- •MyModul.h
- •Main.cpp
- •MyModul.h (2 редакция)
- •Задача
- •Строки в C
- •Ввод и вывод строк
- •Функции для обработки строк
- •Пример обработки строк
- •Массивы строк
- •Обработка символов в строках
- •Пример распознавания символов
- •Разбиение строки на лексемы
- •Результат работы программы
- •Структуры
- •Объявление тега структуры (синоним типа)
- •Анонимный тип структуры
- •Инициализация структурной переменной
- •Действия над структурами
- •Задача
- •Передача в функцию структурной переменной
- •Вложенные структуры
- •Массив структур
- •Передача в функцию массива структур
- •void input_struct(struct Person* P, int n)
- •Объединения
- •Пример программы
- •Инициализация объединения
Действия над структурами
1. Обращение к полю структуры через имя переменной
Stud1.Year Stud2.Name
2. Использование в вычислениях полей структур
Stud1.Year = 1992;
int Age = 2011 - Stud1.Year; strcpy(Stud1.Name, ''Bill'');
printf(''Имя:%s возраст:%d'', Stud1.Name, Age);
3. Обращение к полю через указатель
struct Person* pStud = &Stud1;
printf(''%s %d'', pStud->Name, pStud->Year);
Задача
Создать тип данных — структуру, содержащую 3 поля: Марка машины, Фамилия владельца, Год выпуска. Создать две структурных переменных, ввести в них данные с клавиатуры. Определить, какая из двух машин новее. Вычислить срок эксплуатации каждой машины. Результаты вывести на экран.
Эту же задачу решить для структуры, имеющей в составе 5 полей: Марка машины, Фамилия владельца, Год выпуска, Месяц выпуска, Дата выпуска.
Передача в функцию структурной переменной
struct Person
{
char Name[30]; int Year;
} ;
void input_struct(struct Person* P); void output_struct(struct Person P); int main()
{
struct Person Ann; input_struct(&Ann); output_struct(Ann); return 0;
}
void input_struct(struct Person* P)
{
scanf(''%s'', P->Name); scanf(''%d'',&P->Year);
}
void output_struct(struct Person P)
{
printf(''%s %d\n'', P.Name, P.Year);
}
Вложенные структуры
Объявления типов: struct Person
{
char Name[30]; int Year;
} ;
struct Student
{
int Kurs;
struct Person Stud;
} ;
Объявление переменной:
struct Student Nick = {1,{''Ivanov'',1995}};
Обращение к полям структуры:
printf(''%d\n'',Nick.Kurs);
printf(''%s\n'',Nick.Stud.Name);
printf(''%d\n'',Nick.Stud.Year);
Массив структур
struct Person
{
char Name[30]; int Year;
} ;
struct Person Mas[4];
Обращение к полю структуры в массиве: Mas[i].Year = 1996;
(Mas + i)->Year = 1993;
Передача в функцию массива структур
struct Person
{
char Name[30]; int Year;
} ;
void input_struct(struct Person* P, int n); void output_struct(struct Person* P, int n); int main()
{
struct Person su11[25]; input_struct(su11, 25); output_struct(su11, 25); return 0;
}
void input_struct(struct Person* P, int n)
{
int i;
for(i=0; i<n; i++)
{
scanf(''%s'', P[i].Name); scanf(''%d'',&P[i].Year);
}
}
void output_struct(struct Person* P, int n)
{
int i;
for(i=0; i<n; i++)
{
printf(''%s %d\n'', (P+i)->Name, (P+i)->Year);
}
}
Объединения
union myunion /* тип данных */
{
int i; double d;
char mas[12];
} myvar ; /* переменная */
sizeof(myvar) <=> 12
![](/html/64119/250/html_tBpcN_DLfb.983G/htmlconvd-SxVhkn79x1.jpg)
Пример программы
union tag
{
int i; double d;
} u;
int main(void)
{
printf("integer number:\n"); scanf("%d",&u.i); printf("%d \n%e\n", u.i, u.d); printf("double number:\n");
scanf("%lf",&u.d); printf("%d \n%e\n", u.i, u.d); return 0;
}
![](/html/64119/250/html_tBpcN_DLfb.983G/htmlconvd-SxVhkn80x1.jpg)
Инициализация объединения
union tag
{
int i; double d;
} u ={1.2};
int main(void)
{
printf("integer number:\n"); printf("%d\n", u.i); printf("%e\n", u.d);
return 0;
}