Взаимодействие структур и функций может проявляться двумя способами: структура может быть возвращаемым значением и структура может использоваться в качестве аргумента функции. Кроме того, в обоих случаях могут использоваться указатели на объекты структурных типов.
struct COMPLEX f1(int n);
struct complex * f2(int n);
void f3(struct complex cmpl);
void f4(struct complex *Pcmpl);
Как и для других типах данных, структура передается в функцию по значению – т.е. никакие изменения фактических параметров в функции не меняют значения объектов вне ее (под формальный параметр при вызове строится вспомогательный объект). Для изменения содержимого – структуру следует передавать через указатель на нее.