Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






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

 

Пример 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;

}

 


Вложенные структуры

Структура, являющаяся компонентом другой структуры, называется вложенной.

Пример 6.

/* Даны четыре точки - центры четырех окружностей. Заполнить структуру окружность, если все окружности проходят через начало координат. */


#include< conio.h>

#include< stdio.h>

#include< math.h>

#include< stdlib.h>

struct POINT {

Float x;

Float y;

};

struct CIRCLE {

struct POINT point; /* вложенная структура */

Double r;

} circle[2], *p;

Void main (void)

{

Int i, j;

Float a, b, c, d;

Clrscr();

Gotoxy(17, 1);

cputs(" ВВЕДИТЕ КООРДИНАТЫ ТОЧЕК: \r\n");

for(i=0; i< 2; i++)

{

cprintf (" \n\n ВВЕДИТЕ X: ");

cprintf (" X[%d]= ", i+1);

cscanf(" %f", & circle[i].point.x);

cprintf (" \n ВВЕДИТЕ Y: ");

cprintf (" Y[%d]= ", i+1);

cscanf (" %f", & circle[i].point.y);

}

p=circle;

Gotoxy(17, 12);

cputs(" РЕЗУЛЬТАТ: \r\n\n");

for(i=0; i< 2; i++)

{

a=p-> point.x;

b=p-> point.y;

c=sqrt(a*a+b*b);

p-> r=c;

cprintf(" \nРАДИУС: %lf ЦЕНТР (%f, %f)\r\n", p-> r, a, b);

p++;

}


 


Лекция № 6. Базовые классы. Классы и члены. Получение доступа к членам класса. Ограничение доступа к членам класса. определение методов класса. Конструкторы и деструкторы. Вложенные классы. структуры.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.