Структуры в с++

cpp

Что такое структура в с и с++? Структуры — это конструкции, которые объединяют данные различных типов. Также структуры могут объединять и подструктуры, которые не являются членами главной структуры в с и с++. Полезность группировки разных типов данных заключается в том, что с ними можно работать ка с единым целым.

Cтруктура автомобиля: название, цвет, скорость, возраст. Это шаблон. Сама работа осуществляется с экземпляром структуры, который можно задавать двумя путями: по шаблону и при объявлении шаблона.

Пример:

[code]
struct car
{
char name[50];
char color[20];
int speed;
int age;
}
[/code]

Экземпляр по шаблону:

[code]
struct car bmw, audi;
[/code]

Экземпляр структуры С++ (cpp) при объявлении шаблона:

[code]
struct car
{
char name[50];
char color[20];
int speed;
int age;
} bmw, audi;
[/code]

Изменить имя шаблона и воспользоваться новым именем в качестве типа данных позволяет квалификатор типа typedef:

[code]
struct car
{
char name[50];
typedef char CarName[50];
char color[20];
int speed;
int age;
} NewBmw;
[/code]

Существует три ограничения:

  • Член структуры может иметь любой тип данных, но не может иметь тот же тип, что и сама структура.
  • В С член структуры не может быть функцией, но указатель на функцию может быть членом структуры.
  • В С++ функция может быть членом структуры, так как структура рассматривается как класс.

Как обращаться к элементам структур? Для этого используется конструкция вида: bmw.name, audi.speed и так далее. Если объявить указатель на структуру (p=&bmw), то обращение к элементам будет выглядеть p->speed, p->age.
Обобщенный пример:

[code]
#include <iostream>

using namespace std;

struct car{
char name[7];
char color[20];
int speed;
int age; };

int main()
{
struct car MyBmw={"bmw","red",230,10};
cout<<MyBmw.name<<‘\n'<<MyBmw.color<<‘\n’
<<MyBmw.speed<<‘\n'<<MyBmw.age<<endl;
system("pause");
}
[/code]

Еще один пример:

[code]
#include <iostream>

using namespace std;

struct MyDate{
int day;
int month;
int year;
char MonthName[5];
};

int main()
{
struct MyDate Dates={01,04,2014,"aprl"};
cout<<Dates.day<<‘\t'<<Dates.month<<‘\t’
<<Dates.year<<‘\t'<<Dates.MonthName<<endl;
system("pause");
}
[/code]

Операция сравнения двух структур MyDate=car не допустима даже если шаблоны структур одинаковы или совпадают.

1 Star2 Stars3 Stars4 Stars5 Stars (3 голосов, средний:5,00 из 5)
Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.
Оставить комментарий