Передача структуры в функцию. Непосредственный доступ к компонентам структуры - плохой стиль программирования

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

 

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

}


 


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

Классы.

Новый тип создаётся путём объявления классов. Класс — это просто коллекция переменных, скомбинированная с набором связанных функций. Это совмещение данных и операций над ними в один объект называется инкапсуляция. Данные в классе называют переменными-членами или данными-членами. Функции класса часто выполняют операции над переменными-членами класса и называются функциями-членами или методами класса. Функции члены принадлежат классу так же, как и данные-члены, и определяют функциональные возможности класса.

Для объявления класса используется ключевое слово class. Пример:


Class Cat

{

Unsigned int Age;








Дата добавления: 2015-12-26; просмотров: 863;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.