Przesuwanie wskaźników po tablicy

0

Mam taki kod...

int main()
{
    int * wsk;
    int tab[ 10 ];
    
    for( int i = 0; i < 10; i++ )
    {
        *( wsk += 2 ) = 20;
    }
    for( int k = 0; k < 10; k += 2 )
    {
        cout << * wsk << endl;
    }
}

Ma on za zadanie wyświetlać co drugą liczbe z tablicy za pomocą wskaźników.
Problem polega na tym, że jak zmienię kod na taki:

int main()
{
    int * wsk;
    int tab[ 10 ];
    
    for( int i = 0; i < 10; i++ )
    {
        *( wsk += 2 ) = i;
    }
    for( int k = 0; k < 10; k += 2 )
    {
        cout << * wsk << endl;
    }
}

to wtedy zamiast tablica wypełnić się 1,2,3,4 itd. wypełnia się 9,9,9[...] i dopiero wyświetla co drugi element. Jeżeli zaś zrobię tak:

int main()
{
    int * wsk;
    int tab[ 10 ];
    
    for( int i = 0; i < 10; i++ )
    {
        *( wsk ++ ) = i;
    }
    for( int k = 0; k < 10; k += 2 )
    {
        cout << * wsk << endl;
    }
}

to już w ogóle katastrofa bo tablica wypełnia się adresami komórek pamięci.
Moje pytanie brzmi - co mam uczynić, żeby tablica wypełniła się dowolną wartością a wskaźnik skakał by po jej elementach wyświetlając tylko co drugą wartość czyli 1,3 a 0 i 2 najlepiej kasował..

0

Fajne są takie zabawy ze wskaźnikami :)
Wszystkie podane przez ciebie przykłady mają wiszący wskaźnik wsk, który przesuwasz po losowej pamięci i odczytujesz dane. Cud że w ogóle cokolwiek dostajesz bez wywalenia się programu.
Brakuje inicjalizacji wskaźnika na początku:
int tab[10];
int* wsk = &tab[0];

i dopiero wtedy możesz robić rzeczy typu
wsk+=2
*wsk
wsk++

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