Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Передача структуры в функцию
Непосредственный доступ к компонентам структуры - плохой стиль программирования. Все операции, которые разрешены применительно к структуре, должны быть при этом реализованы в виде отдельных функций. Не все компиляторы языка Си позволяют передавать структуры в функцию по значению, поэтому в примерах передача структуры идет через указатель.
Пример 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. Базовые классы. Классы и члены. Получение доступа к членам класса. Ограничение доступа к членам класса. определение методов класса. Конструкторы и деструкторы. Вложенные классы. структуры.
|