Введите адрес студента Петушковa ул. Солнечная, д.1, кв. 4




Пример.

  Поля записи
Запись Fio Adresss Age Oc Sr
Типы полей Строка Строка Целое Массив целочис. Вещ.

Структуры С и С++

В С и С++ запись - встроенный тип struct (структура)

Описание структуры

Описание шаблона структуры

Описание структурной переменной

Синтаксис описания шаблона структуры:

struct <имя_ шаблона>

{

<тип1> <имя_поля1>;

<тип2> <имя_поля2>;

<типN> <имя_поляN>;

};

где <тип1>, <тип2>, …,<типN> - любые основные типы (int, char, float, и т. д.), массив, указатель, структура, объединение.

Пример:

struct Student

{ char *fio; // Фамилия - указатель на char

char Adress[40]; // Адрес - строка

int Age; // Возраст - целое

int oc[4]; // Оценки - целочис. массив

float sr; // Средний балл - вещественное

};

Синтаксис описания структурной переменной:

struct <имя_шаблона> <имя_переменной>;

Или

struct <имя_шаблона> <список имен переменных>;

Примеры:

struct Student S;

struct Student S, S1, S2;

Определение объема памяти, выделяемой под структурную переменную:

sizeof (struct <имя_шалона>);

Пример:

sizeof (struct Student); // 56 байт

Совмещение описания шаблона структуры и структурной переменной

Синтаксис описания:

struct <имя_ шаблона>

{

<тип1> <имя_поля1>;

<тип2> <имя_поля2>;

<типN> <имя_поляN>;

} <имя_переменной>; // или <список имен переменных>;

Пример:

Struct Student

{ char *fio; // Фамилия - указатель на char

char Adress[40]; // Адрес - строка

int Age; // Возраст - целое

int oc[4]; // Оценки - целочис. массив

float sr; // Средний балл - вещественное

} S, S1; // Структурные переменные S, S1

Совмещение описания шаблона, описания структурных переменных и инициализации полей в одном предложении

Пример:

struct Student // Описание структуры

{ char *fio; // Фамилия - указатель на char

char Adress[40]; // Адрес - строка

int Age; // Возраст - целое

int oc[4]; // Оценки - целочис. массив

float sr; // Средний балл - вещественное

}

S, S1, S2={ "Рыбкин", // Описание переменных S,S1,S2

"Река Сож", // и инициализация полей S2

1988,

{5,4,5,4},

};

Использование описания пользовательского (собственного) типа данных для описания структуры

Описание пользовательского типа

Описание переменных

Синтаксис описания:

typedef <описание типа> <имя_типа>;

<имя_типа> <имя_переменной или список имен переменных>;

Пример:

typedef struct Student

{ char *fio; // Фамилия - указатель на char

char Adress[40]; // Адрес - строка

int Age; // Возраст - целое

int oc[4]; // Оценки - целочис. массив

float sr; // Средний балл - вещественное

} My_Student; // Имя собственного типа

My_Student S, S1, S2={ "Рыбкин",

"Река Сож",

1988,

{5,4,5,4},

};

Доступ к отдельным полям структурной переменной.

• - операция выбора или ссылки на поле (обычная точка)

<имя_структурной_переменной>•<имя_поля> - составное имя

Примеры:

S.fio, S.Adress, S.Age, S.oc[0], S.oc[i]

/* Вложенные структуры. Описание. Обращение к полям */

Описание вкладываемой структуры

Описание вложенной структуры и структурных переменных

Пример:

struct fios // Описание вкладываемой структуры

{ char *f,*im,*ot; };

typedef struct Student // Описание собственного типа MY_Student

{ struct fios fio; // Фамилия - структура

char Adress[40]; // Адрес - строка

int Age; // Возраст - целое

int oc[4]; // Оценки - целочис. массив

float sr; // Средняя успеваемость - вещественное

} MY_Student;

MY_Student S,S1, S2={

{"Рыбкин", "Сом", "Язевич"},

"Река Сож",

1988,

{5,4,5,4},

};

Примеры обращения к полям:

S.fio.f, S.fio.im, S.fio.ot, S.fio, S.Adress, S.Age, S.oc[2], S.oc[i]

/* Структурные переменные и указатели */

Синтаксис описания указателя:

<тип>*<имя_переменной>;

-> - операция доступа к полям структурной переменной через указатель(минус больше)

Пример:

typedef struct Student

{ char fio[30]; // Фамилия - строка

char Adress[40]; // Адрес - строка

int Age; // Возраст - целое

int oc[4]; // Оценки - целочис. массив

float sr; // Средняя успеваемость - вещественное

} MY_Student;

MY_Student *S3, // Указатель на структуру

S4; // Структурная переменная

Примеры обращения к полям:

S3->Age, S3->oc[0], S3->oc[i], S3->fio, S4.oc[3]

Массивы структурных переменных

Описание массива структур не отличается от описания массива обычных переменных.

Пример:

Struct Man

{

char fio[31]; // ФИО

int year; // Год рождения

float pay; // Оклад

};

Man d[100], *p=d; // массив структур из 100 элементов и

// указатель, инициализированный адресом

//первого элемента массива

Примеры обращения к полям:

d[i].year, (*(d+i)).year, (d+i)->year

/* Примеры программ работы со структурами */

Пример 1.

#include <stdio.h>

Main()

{

/* Описание шаблона структуры */

struct Student

{ char *fio; // Фамилия - указатель на char

char Adress[40]; // Адрес - строка

int Age; // Возраст - целое

int oc[4]; // Оценки - целочис. массив

float sr; // Средний балл - вещественное

};

struct Student S; // Описание структурной переменной S

int i;

float sr;

S.fio="Петушков"; //Присваивание полю значения

printf("Введите адрес студента %sa ",S.fio);

gets(S.Adress); //Ввод значения поля

S.Age=1987;

S.oc[0]=3; S.oc[1]=5; S.oc[2]=4; S.oc[3]= S.oc[2];

sr=0; //Вычисление

for(i=0;i<=3;i++) sr=sr+S.oc[i]; //среднего

sr=sr/4; S.sr=sr; //балла

printf(" Средний балл студента %sа",S.fio);

printf(" %d года рождения,\n проживающего по адресу: %s,",

S.Age,S.Adress);

printf(" равен %5.2f\n",S.sr);

fflush(stdin); getchar();

return(0);

}

Вид экрана после выполнения программы:

Введите адрес студента Петушковa ул. Солнечная, д.1, кв. 4



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-12-08 Нарушение авторских прав и Нарушение персональных данных


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