Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

СТРУКТУРЫ И ФУНКЦИИ

Читайте также:
  1. Cудeбныe функции князя и вeчe
  2. I. Правосознание: понятие, структура, функции и виды.
  3. I. Сущность социальной структуры общества.
  4. I. Сущность, формы, функции исторического знания.
  5. II. Правовая культура: понятие, функции и виды.
  6. II. Функции Аппарата Правительства
  7. II. Функции школьной одежды
  8. II.2.2. Функции
  9. III. Организация и проведение натуральных обследований структуры и интенсивности автотранспортных потоков на основных автомагистралях
  10. Int nod (int, int); - прототип нашей функции.

Структуру можно передавать в функцию и возвращать в качестве значения функции. Если функция не изменяет структуру, вы можете передать структуру в функцию по имени.

Пример. Следующая программа использует функцию show_employee для вывода элементов структуры типа employee:

 

#include <iostream>

#include <string>

 

struct employee

{

char name[64];

long employee_id;

float salary;

char phone[10];

int office_number;

};

 

void show_employee(employee worker)

{

cout << "Служащий: " << worker.name << endl;

cout << "Телефон: " << worker.phone << endl;

cout << "Номер служащего: " << worker. employee_id << endl;

cout << "Оклад: " << worker.salary << endl;

cout << "Офис: " << worker.office_number << endl;

}

 

int main()

{

employee worker;

// Копировать имя в строку

strcpy(worker.name, "Джон До");

worker.employee_id = 12345;

worker.salary = 25000.00;

worker.office_number = 102;

// Копировать номер телефона в строку

strcpy(worker.phone, "555-1212");

show_employee(worker);

return 0;

}

Как видите, программа передает переменную типа данной структуры worker в функцию show__employee по имени. Далее функция show_employee выводит элементы структуры. Однако обратите внимание, что программа теперь определяет структуру employee вне main и до функции show_employee. Поскольку функция объявляет переменную worker типа employee, определение структуры employee должно располагаться до функции.

 

Как вы знаете, если функция изменяет параметр, вам следует передавать этот параметр в функцию с помощью адреса. Если функция изменяет элемент структуры, вы должны передавать эту структуру в функцию с помощью адреса, Для передачи переменной типа структуры с помощью адреса вы просто предваряете имя переменной оператором адреса C++ (&), как показано ниже:

some_function(&worker);

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

pointer_variable->member = some_value;

Пример. Следующая программа передает структуру типа employee в функцию с именем get_employee_id, которая запрашивает у пользователя идентификационный номер служащего и затем присваивает этот номер элементу структуры employee_id. Чтобы изменить элемент, функция работает с указателем на структуру:

#include <iostream.h>

#include <string.h>

 

struct employee

{

char name[64];

long employee_id;

float salary;

char phone[10];

int office_number;

};

 

void get_employee_id(employee *worker)

{

cout << "Введите номер служащего: ";

cin >> worker->employee_id;

}

 

int main()

{

employee worker;

// Копировать имя в строку

strcpy(worker.name, "Джон До");

get_employee_id(&worker);

cout << "Служащий: " << worker, name << endl;

cout << "Номер служащего: " << worker.employee_id << endl;

return 0;

}

Как видите, внутри main программа передает переменную worker типа структуры в функцию get_employee_id с помощью адреса. Внутри функции gel_employee_id значение, введенное пользователем, присваивается элементу employee_id.

Другие операции со структурами могут быть определены пользователем.

 

3.2. ФАЙЛЫ В C++

Файлом называют способ хранения информации на физическом устройстве. Файл — это понятие, которое применимо ко всему — от файла на диске до терминала.

Файл – именованный набор байтов, который может быть сохранен на некотором накопителе. Ну, теперь ясно, что под файлом понимается некоторая последовательность байтов, которая имеет своё, уникальное имя, например файл.txt. В одной директории не могут находиться файлы с одинаковыми именами. Под именем файла понимается не только его название, но и расширение, например: file.txt и file.dat - разные файлы, хоть и имеют одинаковые названия. Существует такое понятие, как полное имя файлов – это полный адрес к директории файла с указанием имени файла, например: D:\docs\file.txt. Важно понимать эти базовые понятия, иначе сложно будет работать с файлами.

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

Текстовый поток — это последовательность символов. При передаче символов из потока на экран, часть из них не выводится (например, символ возврата каретки, перевода строки).

Двоичный поток — это последовательность байтов, которые однозначно соответствуют тому, что находится на внешнем устройстве.

Поток заканчивается признаком конца файла EOF, значение которого обычно -1 но в общем случае отличается от любого символа.




Дата добавления: 2014-12-19; просмотров: 84 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав