Menu
Coddy logo textTech

Operator strzałki (->)

Część sekcji Logika i sterowanie przepływem ścieżki C w Coddy. Lekcja 45 z 63.

Podczas pracy ze wskaźnikami do struktur dostęp do składowych struktury wymaga specjalnej składni. Możesz użyć operatora dereferencji i notacji kropkowej razem, ale C udostępnia wygodniejszy operator przeznaczony specjalnie do tego celu: operator strzałki (->).

Operator strzałki pozwala uzyskać dostęp do składowych struktury za pośrednictwem wskaźnika w czytelny i przejrzysty sposób:

ptr->member

Jest to równoważne zapisowi (*ptr).member, ale znacznie bardziej zwięzłe.

Oto jak działa to w praktyce:

struct Point p1 = {10, 20};
struct Point *ptr = &p1;

// Użycie operatora strzałki
printf("x = %d, y = %d\n", ptr->x, ptr->y);

// To jest równoważne zapisowi:
printf("x = %d, y = %d\n", (*ptr).x, (*ptr).y);

Operator strzałki sprawia, że kod jest bardziej przejrzysty i łatwiejszy do czytania, zwłaszcza podczas pracy ze złożonymi strukturami danych. To standardowy sposób uzyskiwania dostępu do składowych struktur za pomocą wskaźników w programowaniu w C.

challenge icon

Wyzwanie

Łatwy

Napisz program w C, który demonstruje użycie operatora strzałki do uzyskiwania dostępu do składowych struktury za pośrednictwem wskaźników. Twój program powinien:

  1. Zdefiniować struct o nazwie Book z następującymi składowymi:
    • Liczbę całkowitą id do przechowywania identyfikatora książki
    • Tablicę znaków title o rozmiarze 40 do przechowywania tytułu książki
    • Tablicę znaków author o rozmiarze 30 do przechowywania nazwiska autora
    • Liczbę zmiennoprzecinkową price do przechowywania ceny książki
    • Liczbę całkowitą pages do przechowywania liczby stron
  2. W funkcji main utworzyć zmienną typu Book o nazwie myBook
  3. Zadeklarować wskaźnik do struktury Book o nazwie bookPtr
  4. Przypisać adres zmiennej myBook do bookPtr
  5. Wczytać następujące wartości wejściowe i przypisać je do składowych struktury za pomocą operatora strzałki i wskaźnika:
    • Wczytać liczbę całkowitą będącą identyfikatorem i przypisać ją za pomocą bookPtr->id
    • Wczytać ciąg znaków będący tytułem i przypisać go za pomocą bookPtr->title
    • Wczytać ciąg znaków będący nazwiskiem autora i przypisać go za pomocą bookPtr->author
    • Wczytać liczbę zmiennoprzecinkową będącą ceną i przypisać ją za pomocą bookPtr->price
    • Wczytać liczbę całkowitą będącą liczbą stron i przypisać ją za pomocą bookPtr->pages
  6. Po wczytaniu wszystkich wartości wykonać następujące operacje za pomocą operatora strzałki:
    • Zastosować 10% zniżki do ceny: bookPtr->price = bookPtr->price * 0.9;
    • Dodać 50 stron bonusowych: bookPtr->pages += 50;
  7. Wypisać informacje o książce, używając operatora strzałki do uzyskania dostępu do każdej składowej, dokładnie w następującym formacie:
    • Book Information:
    • ID: [id]
    • Title: [title]
    • Author: [author]
    • Price: [price]
    • Pages: [pages]
  8. Obliczyć i wypisać cenę za stronę, używając operatora strzałki, w formacie: Price per page: [price_per_page]

To wyzwanie sprawdza Twoją znajomość operatora strzałki służącego do uzyskiwania dostępu do składowych struktury za pośrednictwem wskaźników. Przećwiczysz używanie składni ptr->member zarówno do odczytywania, jak i zapisywania składowych struktury, pokazując, że jest ona równoważna zapisowi (*ptr).member, ale znacznie wygodniejsza i czytelniejsza.

Spróbuj swoich sił

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

// TODO: Zdefiniuj tutaj strukturę Book

int main() {
    // TODO: Utwórz zmienną typu Book o nazwie myBook
    
    // TODO: Zadeklaruj wskaźnik na Book o nazwie bookPtr
    
    // TODO: Przypisz adres myBook do bookPtr
    
    // Odczytaj wartości wejściowe
    int id;
    char title[40];
    char author[30];
    float price;
    int pages;
    
    scanf("%d", &id);
    scanf("%s", title);
    scanf("%s", author);
    scanf("%f", &price);
    scanf("%d", &pages);
    
    // TODO: Przypisz wartości wejściowe do pól struktury za pomocą operatora strzałki
    
    // TODO: Zastosuj rabat 10% do price za pomocą operatora strzałki
    
    // TODO: Dodaj 50 dodatkowych stron za pomocą operatora strzałki
    
    // TODO: Wypisz informacje o książce za pomocą operatora strzałki
    
    // TODO: Oblicz i wypisz cenę za stronę za pomocą operatora strzałki
    
    return 0;
}
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator C online