logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C++] Wartości tablicy Tab po modyfikacjach wskaźnikiem Wsk?

Freeload 25 Lis 2006 09:24 1687 2
REKLAMA
  • #1 3260911
    Freeload
    Poziom 10  
    Posty: 11
    Mam poda jakie wartości będą miały poszczególne komórki tablicy Tab po wykonaniu tego kodu:

    int Tab[4] = {1,3,5,7};
      int *Wsk = Tab;
      Wsk++;
      *Wsk=1;
      Wsk+=2;
      *Wsk=5;
    


    I tu mam problem bo nie jestem pewny rozwiązania :P Czy mógłby ktoś to sprawdzi i powiedziec czy dobże kombinuje ?

    Pierwsza linijka utworzy mi tabele posiadającą 4 elementy (1,3,5,7).
    Druga ustawi wskaźnik na pierwszy element w tabeli (czyli 1).
    Trzecia zwiększy pierwszy element o 1 (czyli da 2).
    Czwarta ustawi drugi element tabeli na 1.
    Piąta zwiększy 3 element o 2 (czyli da 7).
    Szósta ustawi wskaźnik na 5.

    Wynik: 2,1,7,5 :?:
  • REKLAMA
  • Pomocny post
    #2 3260946
    MirekCz
    Poziom 35  
    Posty: 2220
    Pomógł: 330
    Ocena: 62
    Trochę inaczej.

    Wszystko co dodajesz do wskaźnika zwiększy jego wartość - czyli zmieni miejsce w które on wskazuje.

    Zapisujesz dane do wskaźnika tylko z pomocą *

    Czyli Wsk++ powoduje, że wskaźnik wskazuje na kolejny element, natomiast *Wsk= powoduje przypisanie elementowi na który wskazuje wskaźnik nowej wartości

    Tak więc:
    1.linijka tak jak mówisz
    2.Wsk wskazuje na pierwszy element tablicy (czyli 1)
    3.Wskaźnik wskazuje na kolejny element tablicy (czyli 3) - żaden z elementów tablicy nie jest zmieniany
    4.*Wsk=1 - drugi element tablicy jest zapisany jako 1 (tablica wygląda {1,1,5,7}
    5.Wsk+=2 - wskaźnik wskazuje na czwarty element tablicy (o dwa dalej przeskakuje)
    6.*Wsk=5 - czwarty element to 5, więc tablica to {1,1,5,5}

    Jeszcze jedna uwaga. Według Twojego opisu komenda *Wsk powoduje automatyczne przeskoczenie do następnego elementu po zapisaniu wartości... tak nie jest.
  • #3 3261002
    Freeload
    Poziom 10  
    Posty: 11
    Dzięki za pomoc już rozumiem o co chodzi.
REKLAMA