Dostęp do składowych struktury
Część sekcji Logika i sterowanie przepływem ścieżki C w Coddy. Lekcja 41 z 63.
Teraz, gdy potrafisz tworzyć zmienne typu struct, musisz nauczyć się pracować z przechowywanymi w nich danymi. Operator kropki (.) umożliwia dostęp do poszczególnych składowych zmiennej typu struct i ich modyfikowanie.
Składnia dostępu do składowych struktury jest prosta:
structVariable.memberNameKorzystając z naszego przykładu struktury Point, możesz zarówno odczytywać, jak i zapisywać jej pola:
struct Point p1;
// Zapisywanie wartości w polach struktury
p1.x = 10;
p1.y = 20;
// Odczytywanie wartości z pól struktury
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);Operator kropki działa dokładnie tak samo jak dostęp do każdej innej zmiennej — możesz go używać w przypisaniach, działaniach arytmetycznych, wywołaniach funkcji lub wszędzie tam, gdzie używałbyś zwykłej zmiennej tego typu. Każdy element zachowuje się jak niezależna zmienna zadeklarowanego typu, co pozwala na uporządkowane i intuicyjne operowanie danymi struktury.
Wyzwanie
ŁatwyUtwórz program w C, który demonstruje dostęp do składowych struktury i ich modyfikowanie za pomocą operatora kropki. Twój program powinien:
- Zdefiniować
structo nazwieCarz następującymi składowymi:- Liczbę całkowitą
yeardo przechowywania roku produkcji - Tablicę znaków
brando rozmiarze 20 do przechowywania marki samochodu - Liczbę całkowitą
mileagedo przechowywania aktualnego przebiegu - Liczbę zmiennoprzecinkową
pricedo przechowywania ceny samochodu
- Liczbę całkowitą
- Utworzyć zmienną
Caro nazwiemyCar - Wczytać następujące wartości wejściowe i przypisać je do składowych struktury za pomocą operatora kropki:
- Wczytać liczbę całkowitą określającą rok i przypisać ją do
myCar.year - Wczytać ciąg znaków określający markę i przypisać go do
myCar.brand - Wczytać liczbę całkowitą określającą przebieg i przypisać ją do
myCar.mileage - Wczytać liczbę zmiennoprzecinkową określającą cenę i przypisać ją do
myCar.price
- Wczytać liczbę całkowitą określającą rok i przypisać ją do
- Po wczytaniu wszystkich wartości wykonać następujące operacje:
- Zwiększyć przebieg o 1000 za pomocą
myCar.mileage += 1000; - Zmniejszyć cenę o 500.0 za pomocą
myCar.price -= 500.0;
- Zwiększyć przebieg o 1000 za pomocą
- Wypisać informacje o samochodzie, używając operatora kropki, aby uzyskać dostęp do każdej składowej, w dokładnie takim formacie:
Car Details:Year: [year]Brand: [brand]Mileage: [mileage]Price: [price]
To wyzwanie sprawdza, czy rozumiesz zastosowanie operatora kropki zarówno do odczytywania, jak i zapisywania składowych struktury. Przećwiczysz przypisywanie wartości do składowych struktury, wykonywanie na nich operacji arytmetycznych oraz odczytywanie ich w celu wypisania danych.
Na przykład, jeśli dane wejściowe to:
2020
Toyota
50000
25000.50Oczekiwane wyjście:
Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50Spróbuj swoich sił
#include <stdio.h>
#include <string.h>
// TODO: Zdefiniuj tutaj strukturę Car
int main() {
// TODO: Utwórz zmienną typu Car o nazwie myCar
// Wczytaj wartości wejściowe
int year;
char brand[20];
int mileage;
float price;
scanf("%d", &year);
scanf("%s", brand);
scanf("%d", &mileage);
scanf("%f", &price);
// TODO: Przypisz wartości wejściowe do pól struktury za pomocą operatora kropki
// TODO: Zmień przebieg i cenę zgodnie z instrukcją
// TODO: Wyświetl dane samochodu za pomocą operatora kropki
printf("Car Details:\n");
// Wyświetl tutaj rok, markę, przebieg i cenę
return 0;
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i sterowanie przepływem
1Podstawy wskaźników
Czym jest wskaźnik?Deklarowanie wskaźnikówOperator pobrania adresu (&)Operator dereferencji (*)Wskaźniki NULLPodsumowanie: podstawy wskaźników4Projekt: Proste narzędzie tekstowe
Przegląd projektuLiczenie znaków7Struktury (struct)
Czym jest struktura?Deklarowanie strukturyTworzenie zmiennych strukturyDostęp do składowych strukturyInicjalizacja strukturPodsumowanie: struktura danych studenta2Wskaźniki i tablice
Nazwy tablic jako wskaźnikiElementy tablic — wskaźnikiArytmetyka wskaźnikówPorównywanie wskaźnikówPodsumowanie: przechodzenie po tablicy za pomocą wskaźników5Wskaźniki i funkcje
Przekazywanie przez wartośćPrzekazywanie wskaźników do funkcjiModyfikowanie zmiennych za pomocą wskaźnikówKlasyczny przykład: zamianaPrzekazywanie tablic do funkcjiPowtórka: argumenty wskaźnikowe funkcji8Struktury i wskaźniki
Wskaźniki do strukturOperator strzałki (->)Przekazywanie struktur przez wartośćPrzekazywanie wskaźników do strukturDynamiczna alokacja strukturPodsumowanie: modyfikowanie struktury — wskaźnik11Końcowe zadania powtórkowe
Powtórka: dynamiczne łączenie ciągów znakówPowtórka: tablica strukturPowtórka: licznik częstotliwości słów3Tablice znaków i ciągi znaków
Ciągi znaków jako tablice charZnak końca ciąguWczytywanie ciągu za pomocą scanfUżywanie strlen()Używanie strcpy()Używanie strcat()Używanie strcmp()Podsumowanie: podstawowe funkcje do obsługi ciągów znakówPoćwicz samodzielnie: Kompilator C online