Программирование на C и C++

Онлайн справочник программиста на C и C++

Передача всей структуры в функцию

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

Когда структура используется как параметр, самое важное - это запомнить, что тип аргумента должен соответствовать типу параметра. Лучший способ сделать это - определить структуру глобально, а затем использовать ее ярлык для объявления необходимых структурных переменных и параметров. Например:

#include <stdio.h>

/* объявление типа структуры */
struct struct_type {
int a, b;
char ch;
};

void f1(struct struct_type parm);

int main(void)
{
struct struct_type arg;    /* объявление arg */
arg.a = 1000;
f1(arg);
return 0;
}

void f1(struct struct_type parm) {
printf("%d", parm.a);
}

Данная программа выводит число 1000 на экран. Можно видеть, что как arg, так и parm объявлены как структуры типа struct_type.