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

Непосредственный доступ к компонентам структуры — плохой стиль программирования. Все операции, которые разрешены применительно к структуре, должны быть при этом реализованы в виде отдельных функций. Не все компиляторы языка Си позволяют передавать структуры в функцию по значению, поэтому в примерах передача структуры идет через указатель.

 

Пример 5.

/* Передача структуры в функцию через указатель на структуру */

/* Определение комплексного числа через структуру и действия */

/* над комплексными числами ( ввод, вывод, вычисление суммы) */


#include <stdio.h>

typedef struct { float a; /* действительная часть */

float b; /* мнимая часть */

} COMPLEX;

void vvod(COMPLEX *,float,float);

void sum(COMPLEX *,COMPLEX *,COMPLEX *);

void out(COMPLEX *);

Void main(void)

{

COMPLEX x,y,z;

vvod(&x,2.5,6.7);

vvod(&y,6.89,8.45);

puts(«Введены числа:»);

out(&x);

out(&y);

sum(&x,&y,&z);

puts(«Сумма комплексных чисел равна:»);

out(&z);

}

/* Вывод комплексного числа */

void out( COMPLEX *p)

{

printf("(%.2f,%.2f)\n", (*p).a,(*p).b);

Return;

}

/* Вычисление суммы двух комплексных чисел */

void sum(COMPLEX *p1,COMPLEX *p2,COMPLEX *p3)

{

(*p3).a=(*p1).a+(*p2).a;

(*p3).b=(*p1).b+(*p2).b;

Return;

}

/* Ввод значений для элементов структуры */

void vvod(COMPLEX *p,float a, float b)

{

p->a=a;

p->b=b;

Return;

}

 


еще рефераты
Еще работы по истории