Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcii_1_10 / Лекция 10.pptx
Скачиваний:
33
Добавлен:
21.05.2015
Размер:
294.21 Кб
Скачать

// Отображение на экране инвентарной ведомости. void display()

{

int t;

for(t=0; t<SIZE; t++ )

{

if(*invtry[t].item)

{

cout << invtry[t].item << '\n';

cout << "Стоимость: $" << invtry[t].cost;

cout << "\nB розницу: $";

cout << invtry[t].retail << '\n';

cout << "В наличии: " << invtry[t].on_hand;

cout << "\nДо пополнения осталось: ";

cout << invtry[t].lead_time << " дней\n\n";

}}

}

Передача структур функциям

При передаче функции структуры в качестве аргумента используется механизм передачи параметров по значению.

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

#include <iostream> using namespace std;

// Определяем тип структуры. struct sample {

int a;

char ch;

};

void f1(sample parm); int main()

{

struct sample arg; // Объявляем переменную arg типа sample.

arg.a = 1000;

arg.ch = 'x';

f1(arg);

return 0;

}

void f1(sample parm)

{

cout << parm.a << " " << parm.ch << "\n";

}

Присваивание структур

Содержимое одной структуры можно присвоить другой, если обе эти структуры имеют одинаковый тип.

#include <iostream> using namespace std; struct stype {

int a, b;

};

int main()

{

stype svar1, svar2;

svar1.a = svar1.b = 10;

svar2.a = svar2.b = 20;

cout << "Структуры до присваивания.\n";

cout << "svar1: " << svar1.a << ' ' << svar1.b;

cout <<'\n';

cout << "svar2: " << svar2.a << ' ' << svar2.b;

cout <<"\n\n";

svar2 = svar1; // присваивание структур

cout << "Структуры после присваивания.\n";

cout << "svar1: " << svar1.a << ' ' << svar1.b;

cout << '\n';

cout << "svar2: " << svar2.a << ' ' << svar2.b;

return 0;

}

Эта программа генерирует следующие

результаты.

Структуры до присваивания

svar1: 10 10

svar2: 20 20

Структуры после присваивания

svar1: 10 10

svar2: 10 10

В C++ каждое новое объявление

структуры определяет новый тип.

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

struct stype1

{

int a, b;

};

struct stype2

{

int a, b;

};

stype1 svar1; stype2 svar2;

svar2 = svar1; // Ошибка из-за несоответствия типов.

Использование указателей на

структуры и оператора "стрелка»

Указатель на структуру объявляется так же, как указатель на любую другую переменную, т.е. с помощью символа "*", поставленного перед именем структурной переменной.

Например, используя определенную выше структуру inv_type, можно записать следующую инструкцию, которая объявляет переменную inv_pointer указателем на данные типа

inv_type:

Чтобы найти адрес структурной

переменной, необходимо перед ее именем разместить оператор "&".

Соседние файлы в папке lekcii_1_10