Pokaż wyniki 1 do 6 z 6

Temat: Tablica struktury

  1. #1

    Domyślnie Tablica struktury

    Witam żeby zobrazować mój problem pokaże go na przykładzie. Potrzebuje mozna to nazwa zrobic ekwipunek do gry , zrobic strukture ktora zawiera :
    1. Numer
    2. Nazwa
    3. MinDmg
    4. MaxDmg
    I jak wiadomo przedmiotow jest duzo, wiec potrzbuje wiele struktur z roznymi danymi w sobie, i tu jets moje pytanie jak to zrobic ?
    Wydaje mi sie ze uzyc tablic i struktur tylko w jaki sposob, w strukturze dac tablice czy w tablice wsadzac strukture ?

  2. #2

    Domyślnie

    w tablicy maja byc wskazniki na struktury

  3. #3

    Domyślnie

    a jak bym zrobil tak ze jest struktura "Ekwipunek"
    Ekwipunek ekwipunek[100];
    to chyba mam 101 struktur no nie ? a tak sie uda ?

  4. #4

    Domyślnie

    lepiej zrób tak:
    Kod:
    void* array[5];
    
    struct equipment* ptr_equipment;
    
    ptr_equipment = ( struct equipment* ) malloc( sizeof( struct equipment ) );
    
    array[0] = ptr_equipment;
    jeśli struktura i jej pola nie będą Ci potrzebne nie zapomnij zwolnić pamięci:

    Kod:
    free( ptr_equipment );

  5. #5

    Domyślnie

    Cytat Napisał g3t_d0wn Zobacz post
    lepiej zrób tak:
    Kod:
    void* array[5];
    
    struct equipment* ptr_equipment;
    
    ptr_equipment = ( struct equipment* ) malloc( sizeof( struct equipment ) );
    
    array[0] = ptr_equipment;
    jeśli struktura i jej pola nie będą Ci potrzebne nie zapomnij zwolnić pamięci:

    Kod:
    
    free( ptr_equipment );
    Sory dluzszy czas mnie nie bylo na forum. Hmm poczytalem o malloc i mam pytanie jak juz wsadze ta stukture do array czyli tablicy to ona bedzie w tabliicy nawet po zwolnieniu pamieci ? Dwa : Jak mam zrobic zeby bylo np 30 roznych rodzaji a kazy jest inny w srodku, zrobic funkcje ktora na poczatku programow (gry) zajmnie sie wpisywaniem w tablice struktur , ktora kazda bedzie osobno notowana ?

  6. #6

    Domyślnie

    widzę że nie doczytałeś jeszcze o tej funkcji malloc, funkcja ta alokuje pamięć dla jakichś danych, w jej argumencie wpisujesz

    rozmiar danych jaki chcesz zaalokować, w tym przypadku proponuję alokację dla każdej ze struktur osobno, dlatego ze jesteś

    początkującym z tego co zauważyłem, obejdzie się bez obliczania offsetów w pamięci.

    1. dla każdej struktury alokujesz pamięć, jej rozmiar jest równy sizeof( struct equipment ) czyli rozmiarowi całej struktury.

    2. do tablicy array nie kopiujesz struktury tylko wskaźnik(adres) na tą strukturę w pamięci.

    3. w przypisywaniu do tablicy wskaźników nie obejdzie się najczęściej bez rzutowania, więc albo robisz to przed alokacją, albo przy

    przydziale do tablicy array, ja proponuję jako że jesteś początkujący rzutowanie przy przypisywaniu wskaźników do tablicy czyli:

    zaprezentuje tu przykladowa funkcje ktora mialaby tego dokonac

    Kod:
    static int count = 0;
    
    static void copy_pointer( void* ptr ) {
          
           array[count] = ptr;
    
           count ++;
    
    }
    przy odwoływaniu się do funkcji copy_pointer robisz rzutowanie na typ void* zeby kompilator przepuścił ten argument funkcji

    czyli:

    Kod:
    copy_pointer(  ( void* )ptr );

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj