Myślę, że dobrze rozumiem odniesienia i wskaźniki. Oto, co ja (myślę) wiem:Zrozumienie wskaźników C++ (kiedy wskazują wskaźnik)
int i = 5; //i is a primitive type, the value is 5, i do not know the address.
int *ptr; //a pointer to an int. i have no way if knowing the value yet.
ptr = &i; //now i have an address for the value of i (called ptr)
*ptr = 10; //Go to the value in ptr, use it to find a location and store 10 there
Prosimy o komentarz lub poprawienie tych oświadczeń.
Teraz próbuję przeskoczyć do tablic wskaźników. Oto czego nie wiem:
char **char_ptrs = new char *[50];
Node **node_ptrs = new Node *[50];
moim rozumieniu jest to, że mam 2 tablice wskaźników, jeden zestaw wskaźników do znaków i jeden do węzłów. Więc gdybym chciał ustawić wartości, chciałbym zrobić coś takiego:
char_ptrs[0] = new char[20];
node_ptrs[0] = new Node;
teraz mam wskaźnik w położeniu 0 mojej tablicy, w każdej odpowiedniej tablicy. Jeszcze raz, proszę o komentarz tutaj, jeśli jestem zdezorientowany.
Co robi operator **? Podobnie, co robi postawienie pojedynczego * przy tworzeniu instancji (* [50])? (co dokładnie nazywa się instancją?)
* ptr = 10 to nie "go, pobierz wartość zapisaną w ptr i zmień ją na 10". Powinno to być "Przejdź do wartości w ptr, użyj jej, aby znaleźć inną lokalizację i zapisz tam 10". To jest właśnie kwestia dereferencji wskaźnika. – Uri
@Uri dobrze spełnione. edytowane i aktualizowane. – Stephano
Muszę zauważyć, że ta książka była nieziemsko pomocna w poznawaniu wskaźników w języku C: Zrozumienie i używanie C Wskaźników przez Richarda Reese'a. Poleciłbym to każdemu, kto uczy się C lub C++, ponieważ pojęcia w nim zawarte są nieocenione. – Stephano