Wskaźniki i struktury danych.

0

Witam nie było mnie na zajęciach ostatnio i robili coś takiego:


struct s {
	string napis;
	int a;
	char znak;
};


int main()
{
	s*zm = NULL;	
	 strukturka(zm);
	cout << zm->a << endl << zm->napis<<endl << zm->znak << endl;
	system("pause");
	return 0;



}

void strukturka(s*&wsk)
{
	wsk = new s;
	wsk->a = 4;
	wsk->napis = "test";
	wsk->znak = 'x';


} 

Nie rozumiem czemu jest tak i wskaźnik i referencja.Czyli jest to wskaźnik który pokazuje na jakiś adres tak?I po co mi to w strukturach?

1

Albo jakiś obszerniejszy artykuł może ktoś podać?Bo ja znajduje tylko jakies podstawowe struktury a o uzywaniu wskaźników dużo nie mogę znaleźć,może coś na angielskim forum?

0

s*& oznacza referencję do wskaźnika na strukturę s.

Zatem po wykonaniu:

    s*zm = NULL;    
     strukturka(zm);

zmienna zm przyjmie jakąś wartość, inaczej mówiąc będzie wskazywać na utworzoną strukturę s, a nie będzie mieć wartości NULL.

Wydaje mi się, że celem zajęć miało być zrozumienie referencji C++.
http://en.cppreference.com/w/cpp/language/reference
oraz
http://en.cppreference.com/w/cpp/language/reference_initialization

0

Jeśli przykład przepisany jest dokładnie, to jest niepoprawny. Nie zwalnia alokowanej pamięci.
new jest, ale delete już nie ma. Zamiast gołych wskaźników, użyj sprytnych wskaźników.

Co do pytania: *& wskaźnik przekazany przez referencję.
http://stackoverflow.com/questions/823426/passing-references-to-pointers-in-c

1 użytkowników online, w tym zalogowanych: 0, gości: 1