Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по программ(мои).doc
Скачиваний:
8
Добавлен:
01.03.2025
Размер:
969.73 Кб
Скачать

Билет №6

1. Способы передачи аргументов в функции и их согласование с параметрами

Стандартный способ передачи - копирование их значений. При этом способе функция не получает доступа к реальным объектам, явл ее аргументами, а получает в стеке локальные копии этих объектов. Изменение не отражается на значениях самих объектов. Локальные копии теряются при выходе из функции. Значения аргументов при передаче по значению не меняются. Такой способ передачи аргум не подходит для: передачи большого объекта; иногда значения аргументов должны быть модифицированы внутри функции.

Ещё способы объявление параметров указателями.

void func (int *x)

{*x = 17;}

int main ()

{int z = 5;

func (&z); // теперь z=17}

Объявление параметров ссылками.

void func (int& x)

{x = 17;}

int main ()

{int z = 5;

func (z); // теперь z=17}

2. Структуры данных struct, поля битов в структуре

Структура - это набор данных, где данные могут быть разного типа. Структуры определ с помощью слова struct.

Пример программы:

#include <stdio.h>

struct student

{

char name[30]; // определение структуры

int kurs;

};

void main()

{

struct student stud1; // объявление переменных stud1 типа struct student

printf("Введите имя:"); // ввод имени

gets(stud1.name);

printf("Введите номер курса:"); // ввод номера курса

scanf("%d", &stud1.kurs);

printf("Студент %s\n", stud1.name);

printf("Курс %d\n", stud1.kurs); // Вывод

}

Это структура содерж переменные kurs и массив name. student является шаблоном структуры, struct student является типом данных. После описания структуры нужно ставить точку с запятой. Чтобы использовать структуру необходимо объявить переменные типа struct student. Компилятор автоматически выделит память под эти переменные. В языке С есть возможность объявлять переменные структуры при описании структуры:

struct student

{ …

} s1, s2;

Обращение к элементам структуры возможно по имени структуры, используется операция точка: Имя_структуры. имя_элемента_структуры…

Или по имени указателя на структуру: Имя_указателя_на_структуру -> имя_элемента_структуры.

Элементами или полями структуры могут быть переменные, массивы, ранее определенные структуры. Функции не могут быть полями структуры.

Основная форма объявления структуры с битовыми полями:

struct имя_структуры

{

тип имя1: длина_в_битах;

...

тип имяN: длина_в_битах;

}

Здесь тип может быть int, unsigned или signed. Длина такой структуры всегда кратна восьми. Если определить

struct student

{

unsigned status: 1;

} stud;

то для переменной stud будет выделено 8 бит, а использоваться будет только один первый бит.

3. Включение в данные объекта информации о методах их обработки

Объект - логическая единица, которая содержит данные и методы обработки этих данных. На возможности включения в данные объекта информации о методах их обработки (в виде указателей на функции) основывается полиморфизм. При отсутствии полной инфы о том, объект какого из производных классов в данный момент обрабатывается, ф-ция тем не менее корректно вызывается в том виде, в каком она была определена для данного класса.