[C] Wskaźnik w strukturze typu deklarowanej struktury

Matiks21
Użytkownik
Użytkownik
Posty: 562
Rejestracja: 20 maja 2013, o 16:33
Płeć: Mężczyzna
Lokalizacja: Kielce
Podziękował: 98 razy

[C] Wskaźnik w strukturze typu deklarowanej struktury

Post autor: Matiks21 »

Witam,

Kod: Zaznacz cały

 struct nazwa{
	int a;
	struct nazwa *j;
};
mam problem ze zrozumieniem wskaźnika na strukture w strukturze którą dopiero definiuje.

tzn. że jezeli utworze zmienną "a" typu "struct nazwa"

Kod: Zaznacz cały

 struct nazwa a;
to "a.j" wskazuje mi adres pierwszego elementu w strukturze?-- 1 wrz 2015, o 20:45 --podbijam.
Ostatnio zmieniony 1 wrz 2015, o 15:59 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
MadJack
Użytkownik
Użytkownik
Posty: 270
Rejestracja: 21 lis 2010, o 22:23
Płeć: Mężczyzna
Podziękował: 5 razy
Pomógł: 35 razy

[C] Wskaźnik w strukturze typu deklarowanej struktury

Post autor: MadJack »

Nie. W tym przypadku j jest wskaźnikiem do jakiejś innej struktury nazwa (który tutaj nie jest w ogóle zainicjalizowany, więc na użycie a.j kompilator powinien rzucić przynajmniej ostrzeżenie, staraj się używać w strukturach jakichś konstruktorów). Możesz użyć tego tak:

Kod: Zaznacz cały

struct nazwa s1;
s1.j = null; //moim zdaniem lepiej niz zostawic niezainicjalizowane
s1.a = 0;
struct nazwa s2;
s2.j = &s1 //teraz s2.j wskazuje na s1
s2.a = 0 //inicjalizuje, bo nieinicjalizowanie zmiennych to zly nawyk
Możesz też użyć tego tak

Kod: Zaznacz cały

struct nazwa s1;
s1.a = 0;
s1.j = &s1; //w tym momencie wskaźnik s1.j wskazuje na obiekt, w którym sie znajduje
ODPOWIEDZ