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

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

Передача членов структур в функции

При передаче членов структур в функции фактически передается значение члена. Следовательно, передается обычная переменная. Рассмотрим для примера следующую структуру:
struct fred {
char x;
int y;
float z;
char s[10];
} mike;

Ниже приведены примеры передачи каждого члена в функцию:

func(mike.х); /* передача символьного значения х */
func2(mike.у); /* передача целочисленного значения у */
func3(mike.z); /* передача вещественного значения z */
func4(mike.s); /* передача адреса строки s */
func(mike.s[2]); /* передача символьного значения s [2] */

Тем не менее, если необходимо передать адрес отдельного члена структуры, следует поместить оператор & перед именем структуры. Например, для передачи адреса элементов структуры mike следует написать:

func(&mxke.x) ; /* передача адреса символа x */
func2(&mike.у); /* передача адреса целого у */
func3(&mike.z); /* передача адреса вещественного z */
func4(mike.s) ; /* передача адреса строки s */
func(&mike.s [2]); /* передача адреса символа s[2] */

Обратим внимание, что оператор & стоит перед именем структуры, а не перед именем члена. Помимо этого, массив s сам по себе является адресом, поэтому не требуется оператора &. Тем не менее, когда осуществляется доступ к отдельному символу строки s, как показано в последнем примере, оператор & необходим.