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.
Wyzwanie
ŁatwyNapisz program w C, który demonstruje inicjalizację struktur za pomocą list inicjalizacyjnych. Twój program powinien:
- Zdefiniować
structo nazwieEmployeez następującymi składowymi:- Liczbę całkowitą
iddo przechowywania identyfikatora pracownika - Tablicę znaków
departmento rozmiarze 15 do przechowywania nazwy działu - Liczbę całkowitą
yearsOfServicedo przechowywania stażu pracy - Liczbę zmiennoprzecinkową
salarydo przechowywania wynagrodzenia pracownika
- Liczbę całkowitą
- Utworzyć trzy zmienne typu
Employeeza pomocą list inicjalizacyjnych z następującymi danymi:emp1: identyfikator 101, dział "Engineering", 5 lat stażu pracy, wynagrodzenie 75000.50emp2: identyfikator 102, dział "Marketing", 3 lata stażu pracy, wynagrodzenie 65000.25emp3: identyfikator 103, dział "Sales", 8 lat stażu pracy, wynagrodzenie 80000.75
- 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]
- Obliczyć i wypisać łączne wynagrodzenie wszystkich trzech pracowników w formacie:
Total Salary: [total] - 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.33Spró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;
}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