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

Jak dostac sie do wskaznika w strukturze przez wskaznik na strukture

Cloud VPS
0 głosów
672 wizyt
pytanie zadane 29 maja 2017 w C i C++ przez Kamil Wielgosz Nowicjusz (200 p.)

Witam,

Chciałbym zapytać forumowiczów jak dostac sie do wskaznika w strukturze przez wskaznik na strukture.

 

Kod:

 

#include <iostream>

using namespace std;


struct mojaStruktura {

       int zm1;
       int zm2;
       int *zm3;
       int *zm4;
};

int main()
{

    mojaStruktura my;


    mojaStruktura *nowe = &my;


    nowe->zm1 = 2;
    (*nowe).zm2 = 3;

    int *heh;

    *heh =8;

//Tak sie nie da ;(
//Jak dostać się do zmiennej *zm3 ??
    nowe->*zm3 = 5;


    cout<<nowe->zm1;
    cout<<endl;
    cout<<nowe->zm2;
    cout<<endl;
    cout<<*heh;
//Tak sie nie da
    cout<<nowe->*zm3;

    return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 29 maja 2017 przez obl Maniak (51,300 p.)

Poczytaj o wskaźnikach, bo teraz w linijce 28 próbujesz przypisać wartość w pamięci, która nie została w żaden sposób przydzielona. A w C++ to jest jak zbrodnia przeciwko ludzkości! Tak się nie robi.

To samo w linijce 32 to nie zadziała, powinno być coś takiego np.:

nowe->zm3 = new int(5); // przydzielam pamięć za pomocą operatora new z przypisaniem wartości

*(nowe->zm3) = 10; // zmieniam wartość pod wskaźnikiem wcześniej przydzielonej pamięci

Najpierw przydzielam pamięć dynamicznie z ustaloną wartością, później przypisuję do tej pamięci nową wartość.

komentarz 29 maja 2017 przez Kamil Wielgosz Nowicjusz (200 p.)
Dzieki, wszystko jasne ;)
0 głosów
odpowiedź 29 maja 2017 przez Patryk Krajewski Nałogowiec (26,170 p.)
*klasa->wskaźnik = 3; Tak powinno działać. I nie wiem czy przed inicjalizacją tego wskaźnika heh nie musisz użyć new(http://cpp0x.pl/kursy/Kurs-C++/Dynamiczne-zarzadzanie-pamiecia-new-i-delete/307)
komentarz 29 maja 2017 przez Kamil Wielgosz Nowicjusz (200 p.)

*klasa->wskaźnik = 3;

W taki sposób nie działa.

 

Wyglada to tak jakby wskaznik w strukturze nie byl zainicjalizowany bo takie instrukcje dzialaja. Kiedy przypisze wskaznik do instniejacej juz zmiennej.

    int zmienna = 5;

    nowe->zm3 = &zmienna;
    cout<<*nowe->zm3;

 

Podobne pytania

0 głosów
2 odpowiedzi 465 wizyt
pytanie zadane 9 kwietnia 2018 w C i C++ przez lambdag Obywatel (1,310 p.)
0 głosów
2 odpowiedzi 244 wizyt
0 głosów
1 odpowiedź 530 wizyt
pytanie zadane 22 grudnia 2018 w Sieci komputerowe, internet przez Lewus78 Nowicjusz (120 p.)

93,469 zapytań

142,404 odpowiedzi

322,713 komentarzy

62,852 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

Kursy INF.02 i INF.03
...