Структуры в C . Частина 1




структури з ++, структури c ++Изучив структуры C в этом уроке, перед вами по справжньому прочиниться простір для творчості в програмуванні. До этого урока, мы могли использовать стандартные (встроенные) типи даних для переменных в своих программах (int, float, char, bool). Зараз же ми навчимося самостійно створювати щось на зразок свого власного типу даних. Це робиться за допомогою структур.

Как всегда, в начале статьи разберемся зачем нам это может понадобиться. Допустим, необходимо сохранить данные о девушке модели. Нам надо хранить о ней такие данные: имя, вік, рост, вес, обсяги і знання / незнання англійської мови. Як бачите, всі дані про модель будуть відрізнятися типами: имя надо хранить в массиве типа char, обсяги – в переменных типа int, для отметки о владении английским подойдет переменная типа bool… Получается, что для хранения этих данных, массив мы никак не сможем использовать, так как он хранит однотипные данные. Используя структуры появляется возможность сгруппировать все эти данные, условно объединенные логической связью, в одно целое. Смотрим:

структури з ++, структури c ++, структура C ++

Для определения структуры используется ключевое слово struct. После него указывается дескриптор (имя нового типа данных). Ім'я дає програміст. Оно подчиняется тем же правилам, что и имена переменных. У нас дескриптор структуры – це WonderfulWoman. В фигурных скобках размещаются элементы (члены) структуры – іменовані змінні або масиви будь-якого типу даних С ++. Структура може зберігати елементи різних типів. Как видите в нашей структуре есть элементы типа int, char і bool. Завершается определение структуры точкой с запятой ;

Після того, как структура определена, ми можемо створювати змінні типу структури – объекты структуры. Создаются они точно так же, как и переменные типа bool, int, char… пишемо дескриптор (“тип”) і даємо ім'я об'єкту структури. Например в main-функции создаем переменную
WonderfulWoman firstWoman; Здесь WonderfulWoman буде грати роль типу, а firstWoman – роль оголошеної змінної.

Елементом структури також може бути об'єкт іншого, определённой ранее, структуры. Тобто структури можна вкладати одну в іншу. Розглянемо приклад. В нём также разберемся, как обращаться к элементам структуры, чтобы записать в них данные, например, і потім показувати на екран.

Йдемо по порядку. Строки 4 – 9: визначення структури Size. Она содержит три элемента типа int, которые будут хранить замеры модели – объемы груди, талии, бёдер. Эту структуру мы вложим в расположенную под ней структуру – WonderfulWoman. Она содержит элементы разных типов – символьный массив, переменные типа int, bool. В рядку 17 объявлен объект volume типу Size. Это и есть вложение структуры. У 21-му рядку знаходиться прототип функції, яка буде відображати дані структури WonderfulWoman на екран. Об этой функции поговорим ниже, когда дойдем до её определения.

Строка 27 – оголошення об'єкта структури: WonderfulWoman firstWoman = {}; тут зрозуміло: WonderfulWoman – дескриптор (тип), firstWoman – объект структуры. Такая запись = {}; встановить всі значення елементів структури WonderfulWoman в нуль. В тому числі, всіх елементів символьного масиву буде присвоєно значення \0 . Так як об'єкт volume є елементом структури WonderfulWoman, його елементів так само будуть присвоєні нулі. Тобто такий запис дозволить очистити всі елементи структури від сміття (остаточных данных от других программ).

Обращение к элементам структуры. Щоб записати або витягти дані нам треба звернутися до конкретного елементу об'єкта структури. Для цього застосовується операція приналежності . (точка): firstWoman.age = 23; Треба нам внести дані про вік – пишем имя объекта структуры, за ним . (точка) и далее имя элемента структуры, в котором должно храниться количество лет модели. Щоб зберегти ім'я – використовуємо бібліотечну функцію strcpy_s() или strcpy() (в залежності від вашої середовища розробки).

Внимательно посмотрите на строки 36 – 38. Там мы присваиваем значения элементам вложенной структуры. Наприклад: firstWoman.volume.breast = 90; Як і раніше пишемо ім'я об'єкта структури, за ним . (точка). Далее имя объекта вложенной структуры, знову . (точка). И только теперь выбираем элемент вложенной структуры breast, к которому надо обратиться.

Последнее – структуру свободно можно передавать в функцию и возвращать из функции, как и обычные переменные. Определение функции для вывода данных структуры на экран – в строках 45 – 54. Так як нам треба тільки показати дані і дуже бажано їх не зіпсувати в функції, передаем структуру с использованием оператора const. Виклик функції знаходиться в рядку 40. Тут просто передаем объект структуры в функцию, указав его имя. Результат:

структури з ++, структури c ++, структура C ++

Домашнее задание для вас: написать еще одну функцию для нашей программы, в которой пользователю предлагается вводить данные о модели с клавиатуры. Внести данные надо будет о трёх моделях и показать их на экран.

В этом видео рассказано о структурах с 4-й минуты:




В этой статье (первой части) мы очень поверхностно рассмотрели структуры C . У додатковій статье (во второй части) о структурах еще поговорим об особенностях определения структуры, об инициализации объектов структуры, про присвоєнні структур з використанням операції = и о том скільки пам'яті виділяється під об'єкти структур.

Щоб підтримати наш сайт – натисніть на скарбничку і виберіть будь-який зручний спосіб.

Нові уроки:


Згоден отримувати повідомлення від purecodecpp.com на мій e-mail

дата
сторінка
Структуры в C . Частина 1
рейтинг
5

8 думки про "Структуры в C . Частина 1

  1. меня всегда пугают новые темы в С++. Так и со структурами ))) Страшно было и подступиться. Почитала то там, то там. Потом зашла на ваш сайткак всегда все коротко и понятно. Жду вторую часть урока о структурах. И массив структур очень интересует :)

  2. Вітаю! Підкажіть, а откуда взялось &Obj в 45 рядку? Я думал это ссылка на переменную Obj, но она нигде не объявлена. В загальному, с этим я запутался. Разъясните пожалуйста.

  3. Тут просто передаем обьект структуры в функцию, указав его имя”. Но ведь у нас имя обьекта структурыэто firstWoman, а мы передаем Obj. А если обьектов будет несколько, как передать конкретный из них?

  4. здравствуйте! я новичок, вопрос, правильно ли этот код складывает футы и дюймы?
    #include “stdafx.h”
    #include
    using namespace std;

    struct Distance
    {
    int feet;
    float inches;
    };

    Distance addengls(Distance, Distance);

    void engldisp(Distance);

    INT _tmain(INT ARGC, _TCHAR * ARGV[])
    {
    setlocale(0, “”);

    Distance d1, d2, d3;

    cout <> d1.feet;
    cout <> d1.inches;

    cout <> d2.feet;
    cout <> d2.inches;

    d3 = addengls(d1, d2);

    cout <<endl;

    engldisp(d1); cout << " + ";

    engldisp(d2); cout << " = ";

    engldisp(d3); cout <= 12.0)
    {
    dd3.inches -= 12.0;

    dd3.feet++;
    }

    dd3.feet += dd1.feet + dd2.feet;

    return dd3;
    }

    void engldisp(Distance dd)
    {

    cout << dd.feet << "\'-" << dd.inches << "\"";

    }

залишити коментар

Код розміщуйте в тегах: <pre class="lang:C ++ декодуванням:true ">ВАШ КОД</заздалегідь>