• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wskaźnik do tablicy struktur jako argument funkcji

0 głosów
989 wizyt
pytanie zadane 4 listopada 2018 w C i C++ przez 5-latek Nowicjusz (240 p.)

Nie potrafię wczytać danych do tablicy struktur, wiem jak zrobić to przy uzyciu referencji, ale nie wiem jak rozwiązać to wskaźnikowo, podaje prosty kod: 

#include <iostream>

using namespace std;

struct dane
{
    int a,b,c;
    string t;
};

void wczytaj(dane** plac,int n)
{
    for(int i=0;i<n;i++)
    {
        cin >> plac[i]->a; cin >> plac[i]->b; cin >> plac[i]->c;
        cin >> plac[i]->t;
    }
}

void wyswietl(dane** plac,int n)
{
    for(int i=0;i<n;i++)
    {
        cout << "Dane: " << endl;
        cout << plac[i]->a << endl;
        cout << plac[i]->b << endl;
        cout << plac[i]->c << endl;
        cout << plac[i]->t << endl;
        cout << endl;

    }
}

int main()
{
    int n;
    cin >> n;
    dane *plac=new dane[n];
    wczytaj(&plac,n);
    wyswietl(&plac,n);
    return 0;
}

 

komentarz 4 listopada 2018 przez 5-latek Nowicjusz (240 p.)
dodam, ze program się kompiluje, ale przy wpisywaniu danych program się "crashuje"..
komentarz 4 listopada 2018 przez 5-latek Nowicjusz (240 p.)
Chodzi mi jak zrobić to przy uzyciu wskaźnika ( -> ) a nie ( . )

1 odpowiedź

0 głosów
odpowiedź 4 listopada 2018 przez RafalS VIP (122,780 p.)

Po pierwsze niepotrzebnie przekazujesz to przez podwójny wskaźnik, pojedynczy jest w sam raz jesli nie chcesz modyfikowac samego wskaznika, czego nie robisz.

A program sie wywala bo pomieszaleś koleność:

dane** plac_ptr = &plac;
plac_ptr[3]->a;

Wydaje mi sie, że chcesz najpierw dobrac sie do tablicy a dopiero wtedy do jej elementow a nie na odwrot. W tym momencie traktowales plac_ptr jako tablice wskaznikow na dane.

(*plac_ptr)[3].a;

Ale wygląda to bardzo dziwnie bo niepotrzebnie robisz te dwa wskaźniki.

Podobne pytania

–1 głos
3 odpowiedzi 1,883 wizyt
pytanie zadane 9 września 2018 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 1,206 wizyt
pytanie zadane 8 kwietnia 2018 w C i C++ przez giedymin33 Początkujący (290 p.)
0 głosów
1 odpowiedź 814 wizyt
pytanie zadane 6 kwietnia 2018 w JavaScript przez JSJerry Początkujący (260 p.)

93,758 zapytań

142,716 odpowiedzi

323,364 komentarzy

63,357 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...