Функции, изменяющие элементы структуры
Как вы знаете, если функция изменяет параметр, вам следует передавать этот параметр в функцию с помощью адреса. Если функция изменяет элемент структуры, вы должны передавать эту структуру в функцию с помощью адреса, Для передачи переменной типа структуры с помощью адреса вы просто предваряете имя переменной оператором адреса C++ (), как показано ниже:
some_function(worker);
Внутри функции, которая изменяет один или несколько элементов, вам следует работать с указателем. Если вы используете указатель на структуру, легче всего обращаться к элементам структуры, используя следующий синтаксис:
pointer_variable-member = some_value;
Например, следующая программа CHG_MBR.CPP передает структуру типа 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;
}
void main(void)
{
employee worker;
// Копировать имя в строку strcpy(worker.name, "Джон Дой");
get_employee_id(worker) ;
cout "Служащий: " worker, name endl;
cout "Номер служащего: " worker.employee_id endl;
}
Как видите, внутри main программа передает переменную worker типа структуры в функцию get_employee_id с помощью адреса. Внутри функции gel_employee_id значение, введенное пользователем, присваивается элементу employee_id с помощью следующего оператора:
cin worker-employee_id;
Работа с указателями на структуры
Если функция изменяет элемент структуры, вызвавшая программа должна передать структуру в функцию с помощью адреса. Функция, в свою очередь, использует указатель на структуру. Для обращения к элементу структуры функции следует использовать следующий формат:
value = variable-member;
variable-other_member = some_value;