Wskaznik pokazuje na inny wskaznik pod ktorym jest zmienna

0
 
#include <iostream>

using namespace std;


int main()
{
    int a = 10;

    int *w=&a;//rozumiem
 
    int *wsk_na_wsk=w;//Nie rozumiem czemu akurat tak zapisane to jest  . Nie powinienem czasem podac adresu tego wsk ? czy nazwa wskaznika to poprostu adres ? (sie pogubilem). 



    return 0;
}
1

w to wskaźnik na int.
wsk_na_wsk to też wskaźnik na int (błędna nazwa).
wsk_na_wsk dostaje taką samą wartość jak w, czyli adres zmiennej a.

Gdybyś chciał adres wskaźnika, to musiałbyś mieć

int** wsk_na_wsk = &w;
0

1.Czyli zeby pokazac za pomoca wskaznika to co jest przechowywane w innym wskazniku wystarczy int *wsk = w (gdzie w to wskaznik ) ? Nie wiem dlaczego ale jakos mnie to nie przekonywuje (powinnienem to zapamietac na pamiec , czy jakos zrozumiec ? )
2.Co to jest wyłuskanie wskaznika ?
3.Jezeli chce adres innego wskaznika to musze int **wsk=&w a kiedy trzeba bylo by uzyc 3 * (wskaznik ktory pokazuje na inny wskaznik w ktorym przechowywany jest adres innego wskaznika ? )

2
  1. O ile dobrze cie rozumiem, to tak, wystarczy int *wsk = w. A można zrozumieć to chociażby tak, ze int * jest typem danych. Tak samo jak int czy double. Więc masz jakis_tym zmienna = zmienna_2. Tu chyba dokładnie widać, co się robi: zmienna_2 zostaje przekopiowana do zmienna. W przypadku wskaźników i zapisu int *wsk = w przekopiowana zostanie wartość wskaźnika, a jak wiemy wartością wskaźnika (tym, co może on przechowywać) jest adres w pamięci. Więc po takiej operacji wsk wskazuje tam gdzie w.
    Zdaje mi się, że pisałem Ci o tym...

  2. Wyłuskanie wskaźnika (operator*) to "dobranie" się do zmiennej, na którą ten wskaźnik wskazuje. Zauważ, że
    int *wsk = w;
    cout << (*wsk);
    w tych zapisach * oznacza coś innego: w pierwszym jest to informacja, że naszym typem jest wskaźnik, natomiast w zapisie drugim jest to owe wyłuskanie wskaźnika.

  3. Nie wiem dlaczego nie rozumiesz.
    TYP a;
    TYP *wskaznik = &a
    i już. wskaznik wskazuje teraz na obiekt a. Jeśli chcesz wskaźnik na wskaźnik na wskaźnik, to TYP bedzie tutaj wskaznik na wsiaznik Czyli:
    int **a;
    int ***wskaznik = &a;
    O tym też już pisałem w innym temacie,

2

Wskaźnik to też zmienna, więc przypisujesz jednej zmiennej drugą zmienną. Sam pomyśl czemu nie robisz np. czegoś takiego:

int a = 0;
int wsk = &a;
0

Bardzo dobry przyklad :D rozumiem ^^

0

int *wsk to to samo co int* wsk. teraz można sobie łatwo zapamiętać, że jeżeli wsk jest typu int* to *wsk jest typu int.

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