Programowanie

Struktura (programowanie)

Struktura (programowanie)

Struktura - typ danych w języku programowania.

Struktura jest typem zawierającym w sobie zmienne dowolnego typu (tzw. pola). Struktura umożliwia zapakowanie powiązanych ze sobą logicznie danych w jednym obszarze pamięci, który może być przesyłany jako jeden argument.

Spis treści

[edytuj] Struktura w języku C

/* deklaracja */
struct miasto {
    long ludnosc;
    char* rzeka;
};                         
/* definicja */
struct miasto Poznan;
Poznan.ludnosc = 600000;
Poznan.rzeka = (char*)malloc(sizeof(char)*6);
strncpy(Poznan.rzeka, "Warta\0", 6);    

Struktury w C mogą zawierać także pola zajmujące mniej niż 1 bajt. Aby zadeklarować takie pole, należy podać po dwukropku liczbę bitów.

struct liczba {
    unsigned int mlodszy_bajt :8;
    unsigned int starszy_bajt :7;
    unsigned int znak :1;
};

Pola bitowe mogą mieć typ int lub unsigned int. W tym pierwszym wypadku najstarszy bit będzie przeznaczony na znak danego pola.

Zobacz też: unia

[edytuj] Struktura w języku C++

Struktury w C++ są deklarowane tak jak w C, jednak oprócz pól mogą zawierać także funkcje (tzw. metody) i mogą dziedziczyć z innych klas i struktur.

Struktura różni się w C++ od klasy wyłącznie domniemanym zakresem widoczności jej pól i metod - dla klasy jest to private a dla struktur public. Używanie struktur zamiast klas nie jest jednak dobrą praktyką programowania, gdyż zaciemnia budowę programu.

/* deklaracja */
struct miasto {
    long ludnosc;
    char* rzeka;
    miasto(long ludnosc,char *rzeka): 
    ludnosc(ludnosc), rzeka(strdup(rzeka)) {}; /*konstruktor*/
    inline char* wez_rzeke() {return rzeka};
    ~miasto() {free( (void*)rzeka );} /*destruktor*/
};

[edytuj] Struktura w Matlabie

% definicja
Poznan.ludnosc = 600000
Poznan.rzeka = 'Warta'

[edytuj] Struktura w języku Fortran 90/95

! deklaracja
TYPE::miasto
  INTEGER(KIND=4)::ludnosc
  CHARACTER(20)::rzeka  
END TYPE miasto            
! definicja
TYPE(miasto)::Poznan
Poznan%ludnosc = 6000000
Poznan%rzeka = 'Warta'
! albo
Poznan = miasto(6000000,'Warta')

[edytuj] Struktura w Pascalu

{deklaracja}
TYPE miasto = RECORD
    ludnosc : longint;
    rzeka   : array[1..20] of char;
END;                       
{definicja}
VAR Poznan: miasto;
Poznan.ludnosc := 600000;
Poznan.rzeka := 'Warta';

[edytuj] Struktura w PL/1

W języku PL/1 deklaracja struktury zawiera wprost podany przez programistę poziom zagłębienia w hierarchii struktury w postaci liczby całkowitej umieszczonej przed nazwą pola. Struktury na poziomie 1 to niezleżne od siebie obiekty programowe, natomiast każdy kolejny poziom deklaruje pola lub kolejne podstruktury zawarte w strukturze nadrzędnej. Zdefiniowana hierarchia struktury może być użyta w innej deklaracji dzięki użyciu frazy LIKE, kopjującej zdefioniowaną strukturę.

 dcl
 1 miasto,
   2 ludnosc fixed dec(7,0),
   2 rzeka char(20);
 ...
 miasto.ludnosc=6000;
 miasto.rzeka='Warta';