Menu
Coddy logo textTech

Inicjalizacja struktur

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

Możesz tworzyć zmienne typu struct, a następnie przypisywać wartości do ich pól pojedynczo, ale C zapewnia wygodniejszy sposób ustawiania wartości początkowych. Możesz zainicjalizować zmienną typu struct w momencie deklaracji za pomocą listy inicjalizacyjnej ujętej w nawiasy klamrowe.

Składnia inicjalizacji struktury to:

struct StructureName variableName = {value1, value2, ...};

Korzystając z naszego przykładu struktury Point, możesz zadeklarować ją i zainicjalizować w jednej prostej linii:

struct Point p1 = {10, 20};

Tworzy to zmienną typu Point o nazwie p1, w której x ma wartość 10, a y ma wartość 20. Wartości z listy inicjalizacyjnej są przypisywane składowym struktury w kolejności, w jakiej zostały zadeklarowane w definicji struktury.

To podejście do inicjalizacji jest nie tylko bardziej zwięzłe niż osobne przypisania, ale także gwarantuje, że Twoja struktura zaczyna od znaczących wartości, a nie losowych śmieciowych danych. Jest szczególnie przydatne, gdy znasz wartości początkowe w czasie kompilacji i chcesz efektywnie tworzyć gotowe do użycia zmienne struktur.

challenge icon

Wyzwanie

Łatwy

Napisz program w C, który demonstruje inicjalizację struktur za pomocą list inicjalizacyjnych. Twój program powinien:

  1. Zdefiniować struct o nazwie Employee z następującymi składowymi:
    • Liczbę całkowitą id do przechowywania identyfikatora pracownika
    • Tablicę znaków department o rozmiarze 15 do przechowywania nazwy działu
    • Liczbę całkowitą yearsOfService do przechowywania stażu pracy
    • Liczbę zmiennoprzecinkową salary do przechowywania wynagrodzenia pracownika
  2. Utworzyć trzy zmienne typu Employee za pomocą list inicjalizacyjnych z następującymi danymi:
    • emp1: identyfikator 101, dział "Engineering", 5 lat stażu pracy, wynagrodzenie 75000.50
    • emp2: identyfikator 102, dział "Marketing", 3 lata stażu pracy, wynagrodzenie 65000.25
    • emp3: identyfikator 103, dział "Sales", 8 lat stażu pracy, wynagrodzenie 80000.75
  3. Wypisać informacje o każdym pracowniku w dokładnie takim formacie:
    • Employee 1:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
    • Employee 2:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
    • Employee 3:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
  4. Obliczyć i wypisać łączne wynagrodzenie wszystkich trzech pracowników w formacie: Total Salary: [total]
  5. Obliczyć i wypisać średni staż pracy w formacie: Average Years of Service: [average]

To wyzwanie sprawdza Twoje rozumienie inicjalizacji struktur za pomocą list inicjalizacyjnych, w których deklarujesz i inicjalizujesz zmienne struktury w jednej linii. Wartości na liście inicjalizacyjnej muszą być podane w tej samej kolejności, w jakiej składowe zostały zadeklarowane w definicji struktury.

Oczekiwany wynik powinien wyglądać następująco:

Employee 1:
ID: 101
Department: Engineering
Years of Service: 5
Salary: 75000.50
Employee 2:
ID: 102
Department: Marketing
Years of Service: 3
Salary: 65000.25
Employee 3:
ID: 103
Department: Sales
Years of Service: 8
Salary: 80000.75
Total Salary: 220001.50
Average Years of Service: 5.33

Spróbuj swoich sił

#include <stdio.h>

// TODO: Zdefiniuj tutaj strukturę Employee

int main() {
    // TODO: Utwórz trzy zmienne typu Employee, używając list inicjalizacyjnych
    
    // TODO: Wypisz informacje o każdym pracowniku
    
    // TODO: Oblicz i wypisz łączną kwotę wynagrodzeń oraz średnią liczbę lat pracy
    
    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