Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпори частина 2.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
656.84 Кб
Скачать
  1. Структури як параметри та результати функцій.

Передача членов структур в функции

При передаче членов структур в функции фактически передается значение члена. Следовательно, передается обычная переменная. Рассмотрим для примера следующую структуру: struct fred { char x; int y; float z; char s[10]; } mike;

Ниже приведены примеры передачи каждого члена в функцию: func(mike.х); /* передача символьного значения х */ func2(mike.у); /* передача целочисленного значения у */ func3(mike.z); /* передача вещественного значения z */ func4(mike.s); /* передача адреса строки s */ func(mike.s[2]); /* передача символьного значения s [2] */

Тем не менее, если необходимо передать адрес отдельного члена структуры, следует поместить оператор & перед именем структуры. Например, для передачи адреса элементов структуры mike следует написать: func(&mxke.x) ; /* передача адреса символа x */ func2(&mike.у); /* передача адреса целого у */ func3(&mike.z); /* передача адреса вещественного z */ func4(mike.s) ; /* передача адреса строки s */ func(&mike.s [2]); /* передача адреса символа s[2] */ Обратим внимание, что оператор & стоит перед именем структуры, а не перед именем члена. Помимо этого, массив s сам по себе является адресом, поэтому не требуется оператора &. Тем не менее, когда осуществляется доступ к отдельному символу строки s, как показано в последнем примере, оператор & необходим.

Передача всей структуры в функцию

Когда структура используется как аргумент функции, передается вся структура с помощью стандартной передачи по значению. Это означает, что любые изменения, внесенные в содержимое структуры внутри функции, не повлияют на структуру, используемую в качестве аргумента.

Когда структура используется как параметр, самое важное - это запомнить, что тип аргумента должен соответствовать типу параметра. Лучший способ сделать это - определить структуру глобально, а затем использовать ее ярлык для объявления необходимых структурных переменных и параметров. Например: #include <stdio.h> /* объявление типа структуры */ struct struct_type { int a, b; char ch; }; void f1(struct struct_type parm); int main(void) { struct struct_type arg;    /* объявление arg */ arg.a = 1000; f1(arg); return 0; } void f1(struct struct_type parm) { printf("%d", parm.a); } Данная программа выводит число 1000 на экран. Можно видеть, что как arg, так и parm объявлены как структуры типа struct_type.

  1. Масиви структур. Оголошення, ініціалізація. Обробка.

Масив, елементами якого є структури, називається масивом структур. Опис масиву структур відбувається за аналогією з описом окремої структури в два етапи, при цьому опис шаблону нічим не відрізняється, а при визначенні структурної змінної після її імені вказується розмірність у квадратних дужках:

Struct <ім’я шаблону><ім’я структурної змінної>[розмірність];

Наприклад: struct stt d[100];

Визначений масив d, що складається зі 100 елементів типу stt.

У цьому разі компілятор виділяє пам’ять зі 100 елементів stt, довжина кожного з яких є сумою довжин елементів структури stt.

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