Доступ к членам структуры
Часть раздела 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);Оператор «точка» работает точно так же, как обращение к любой другой переменной — вы можете использовать его в операциях присваивания, арифметических операциях, вызовах функций или везде, где вы бы использовали обычную переменную этого типа. Каждый член ведет себя как независимая переменная своего объявленного типа, что позволяет вам манипулировать данными структуры организованным и интуитивно понятным способом.
Задание
ЛегкоСоздайте программу на языке C, которая демонстрирует доступ к членам структуры и их изменение с помощью оператора «точка». Ваша программа должна:
- Определить
structс именемCarсо следующими членами:- Целое число
yearдля хранения года выпуска - Символьный массив
brandразмером 20 для хранения марки автомобиля - Целое число
mileageдля хранения текущего пробега - Число с плавающей точкой
priceдля хранения цены автомобиля
- Целое число
- Создать переменную типа
Carс именемmyCar - Считать следующие входные значения и присвоить их членам структуры, используя оператор «точка»:
- Считать целое число для года и присвоить его
myCar.year - Считать строку для марки и присвоить ее
myCar.brand - Считать целое число для пробега и присвоить его
myCar.mileage - Считать число с плавающей точкой для цены и присвоить его
myCar.price
- Считать целое число для года и присвоить его
- После чтения всех значений выполнить следующие операции:
- Увеличить пробег на 1000, используя
myCar.mileage += 1000; - Уменьшить цену на 500.0, используя
myCar.price -= 500.0;
- Увеличить пробег на 1000, используя
- Вывести информацию об автомобиле, используя оператор «точка» для доступа к каждому члену в точно таком же формате:
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;
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
1Основы указателей
Что такое указатель?Объявление указателейОператор взятия адреса (&)Оператор разыменования (*)Указатели NULLИтоги: Основы указателей4Проект: Простая текстовая утилита
Обзор проектаПодсчет символов7Структуры (structs)
Что такое структура?Объявление структурыСоздание переменных структурДоступ к членам структурыИнициализация структурПовторение: структура данных Student2Указатели и массивы
Имена массивов как указателиЭлементы массива — указателиАрифметика указателейСравнение указателейИтоги: Обход массива через указатели5Указатели и функции
Передача по значениюПередача указателей в функцииИзменение переменных через указателиКлассический пример: SwapПередача массивов в функцииИтоги: указатели как аргументы функций8Структуры и указатели
Указатели на структурыОператор «стрелка» (->)Передача структур по значениюПередача указателей на структурыДинамическое выделение памяти для структурИтоги: Изменение структур через указатели11Итоговые задачи на повторение
Повторение: динамическая конкатенация строкПовторение: массив структурПовторение: счетчик частоты слов3Символьные массивы и строки
Строки как массивы charНуль-терминаторВвод строк с помощью scanfИспользование strlen()Использование strcpy()Использование strcat()Использование strcmp()Итоги: основные строковые функции