wątpliwości do wskaźników

0

Jestem dopiero co po przeczytaniu rozdziału o wskaźnikach. Postanowiłem sobie robić taki program do testowania jak co wygląda, są to na razie tylko początkowe lekcje ale już mam problem.

#include <iostream>

using namespace std;

void funkcja( int k);
void funkcja2( int *cel);
void fun( int *kkk );
int *wsk2 , *wsk3;
void fun2( int hh );
int *wsk4 , *wsk5;

int main()
{
    int i = 5;
    int *wsk = &i;                                  //OK
    int w = 10;

    funkcja( i );                                   //OK
    funkcja2( wsk );                                //OK
    for (int l = 0 ; l < 1 ; l++ )
    {
        fun(wsk);
        cout << "wartosc 1 wsk2 " << *wsk2 << endl; //pokazuje5
        cout << "wartosc 2 wsk3 " << *wsk3 << endl; // pokazuje adres
    }
    for (int f = 0 ; f < 1 ; f++ )
    {
        fun2(w);
        cout << "wartosc 1 wsk4 " << *wsk4 << endl; //pokazuje 10
        cout << "wartosc 2 wsk5 " << *wsk5 << endl; //pokazuje 1
    }
    cout << "wartosc 1 wsk2 " << *wsk2 << endl;     //pokazuje 5
    cout << "wartosc 2 wsk3 " << *wsk3 << endl;     //pokazuje 1

    return 0;
}

void funkcja( int k)
{
    cout << "COS TAM " << k << endl;                //OK
}
void funkcja2( int *cel)
{
    cout << "wartość " << *cel << endl;             //OK
}

void fun( int *kkk )
{
    wsk2 = kkk;
    wsk3 = kkk + 2;                                 //pokazuje adres nie wartość
}
void fun2( int hh )
{
    wsk4 = &hh;
    wsk5 = &hh + 2;
}
 

Moje pytanie to dlaczego jak wypisuje drugi raz wartość *wsk3 to pokazuje inne wartości i dlaczego wsk5 = &hh + 2 daje 1 a nie 12.

0
 
int i = 5;
int *wsk = &i; 
wsk3 = wsk+ 2;
cout << "wartosc 2 wsk3 " << *wsk3 << endl; // --> czytanie poza swoją pamięcią <--
void fun2( int hh )
{
    wsk4 = &hh;
    wsk5 = &hh + 2;
}

Uzyskiwanie adresu do zmiennej lokalnej, a po wykonaniu funkcji uzyskiwanie danych z pod tego adresu - BŁĄD.

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