Menu
Coddy logo textTech

Доступ к членам структуры

Часть раздела Logic & Flow путешествия по C на Coddy — урок 41 из 63.

Теперь, когда вы умеете создавать переменные структур, вам нужно научиться работать с данными, хранящимися внутри них. Оператор «точка» (.) — это ваш ключ к доступу и изменению отдельных членов переменной структуры.

Синтаксис доступа к членам структуры прост:

structVariable.memberName

Используя наш пример структуры Point, вы можете как считывать значения её членов, так и записывать в них:

struct Point p1;

// Запись в члены структуры
p1.x = 10;
p1.y = 20;

// Чтение из членов структуры
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);

Оператор «точка» работает точно так же, как обращение к любой другой переменной — вы можете использовать его в операциях присваивания, арифметических операциях, вызовах функций или везде, где вы бы использовали обычную переменную этого типа. Каждый член ведет себя как независимая переменная своего объявленного типа, что позволяет вам манипулировать данными структуры организованным и интуитивно понятным способом.

challenge icon

Задание

Легко

Создайте программу на языке C, которая демонстрирует доступ к членам структуры и их изменение с помощью оператора «точка». Ваша программа должна:

  1. Определить struct с именем Car со следующими членами:
    • Целое число year для хранения года выпуска
    • Символьный массив brand размером 20 для хранения марки автомобиля
    • Целое число mileage для хранения текущего пробега
    • Число с плавающей точкой price для хранения цены автомобиля
  2. Создать переменную типа Car с именем myCar
  3. Считать следующие входные значения и присвоить их членам структуры, используя оператор «точка»:
    • Считать целое число для года и присвоить его myCar.year
    • Считать строку для марки и присвоить ее myCar.brand
    • Считать целое число для пробега и присвоить его myCar.mileage
    • Считать число с плавающей точкой для цены и присвоить его myCar.price
  4. После чтения всех значений выполнить следующие операции:
    • Увеличить пробег на 1000, используя myCar.mileage += 1000;
    • Уменьшить цену на 500.0, используя myCar.price -= 500.0;
  5. Вывести информацию об автомобиле, используя оператор «точка» для доступа к каждому члену в точно таком же формате:
    • Car Details:
    • Year: [year]
    • Brand: [brand]
    • Mileage: [mileage]
    • Price: [price]

Эта задача проверяет ваше понимание оператора «точка» как для чтения, так и для записи в члены структуры. Вы попрактикуетесь в присвоении значений членам структуры, выполнении над ними арифметических операций и доступе к ним для вывода.

Например, если на вход подается:

2020
Toyota
50000
25000.50

Ваш вывод должен быть следующим:

Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50

Шпаргалка

Оператор точка (.) используется для доступа к отдельным членам переменной структуры и их изменения.

Синтаксис для доступа к членам структуры:

structVariable.memberName

Пример чтения из членов структуры и записи в них:

struct Point p1;

// Запись в члены структуры
p1.x = 10;
p1.y = 20;

// Чтение из членов структуры
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);

Оператор точка может использоваться в присваиваниях, арифметических операциях, вызовах функций или в любом другом месте, где вы бы использовали обычную переменную этого типа. Каждый член ведет себя как независимая переменная своего объявленного типа.

Попробуйте сами

#include <stdio.h>
#include <string.h>

// TODO: Определите здесь структуру Car

int main() {
    // TODO: Создайте переменную типа Car с именем myCar
    
    // Чтение входных значений
    int year;
    char brand[20];
    int mileage;
    float price;
    
    scanf("%d", &year);
    scanf("%s", brand);
    scanf("%d", &mileage);
    scanf("%f", &price);
    
    // TODO: Присвойте входные значения членам структуры, используя оператор точка
    
    // TODO: Измените пробег и цену согласно спецификации
    
    // TODO: Выведите данные автомобиля, используя оператор точка
    printf("Car Details:\n");
    // Выведите здесь Год, Марку, Пробег и Цену
    
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow