Учимся программировать на языке C++

         

Функции, изменяющие элементы структуры


Как вы знаете, если функция изменяет параметр, вам следует передавать этот параметр в функцию с помощью адреса. Если функция изменяет элемент структуры, вы должны передавать эту структуру в функцию с помощью адреса, Для передачи переменной типа структуры с помощью адреса вы просто предваряете имя переменной оператором адреса 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;



Содержание раздела