Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wskaźniki i zmienne

Ostatnio zmodyfikowano 2017-10-16 20:36
Autor Wiadomość
aram100
Temat założony przez niniejszego użytkownika
Wskaźniki i zmienne
» 2017-10-16 19:18:09
Witam, nie rozumiem trochę działania wskaźników, które "pokazują" na różne zmienne.

Mój kod:

C/C++
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
    int x = 5;
    int * pi = & x;
    int ** ppi = & pi;
    int y = x;
    * ppi = & y;
    * pi = 6;
    ** ppi = 7;
    cout << x << "_" << y << endl;
    return 0;
}
 
Dlaczego pokazuje on 5_7? Nie rozumiem dlaczego **ppi = 7 oraz *ppi = &y;, sprawiło, że y pokazuje jako 7, a *pi = 6 nie zmieniło wartości x  ...
P-165819
maly7
» 2017-10-16 20:05:29
Przeanalizuj kod linijka po linijce:

C/C++
int x = 5;
int * pi = & x;
int ** ppi = & pi;
int y = x; // y = 5
* ppi = & y; // wskaznik pi wskazuje na y (zmieniasz wartosc zmiennej ppi czyli adres wskaznika pi)
* pi = 6; // zmieniasz wartosc y, x zostaje 5 (wartosc zmiennej na ktora wskazuje pi)
** ppi = 7; // tu tez zmieniasz wartosc y (wartosc zmiennej na ktora wskazuje pi)
P-165820
mateczek
» 2017-10-16 20:10:28
usunąłem z kodu zmienne i przypisania które są  bez znaczenia
C/C++
#include <iostream>
using namespace std;
int main()
{
    int y;
    int * pi;
    int ** ppi = & pi; // ponieważ ppi pokazuje na pi
    * ppi = & y; //a pi pokazuje na y
    * pi = 6; // to oba wskaźniki są na tą samą zmienną
    cout <<( ** ppi ) << " " <<( * pi ) << " " << y << endl;
    ** ppi = 7; //oba zmieniają tylko y
    cout <<( ** ppi ) << " " <<( * pi ) << " " << y << endl;
    return 0;
}
P-165821
aram100
Temat założony przez niniejszego użytkownika
» 2017-10-16 20:36:08
Dziękuję, w końcu zrozumiałem te wskaźniki
P-165822
« 1 »
  Strona 1 z 1