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

wskazniki podstawowy problem

Ostatnio zmodyfikowano 2013-12-04 16:07
Autor Wiadomość
quatromen
Temat założony przez niniejszego użytkownika
wskazniki podstawowy problem
» 2013-12-04 13:33:37
Witam.
Mam problem, polega onna tym że nie mogę odróżnić różnicy między stosowaniem * & a takze nie stosowania ich :
Oto moj program :

C/C++
#include<stdio.h>

int jabol( int * wskaznik3 )
{
    printf( "Adres wskaznik3 w funkcji wynosi = %d \n", wskaznik3 );
    printf( "Adres na ktory wskazuje wskaznik3 w funkcji wynosi = %d \n", & wskaznik3 );
    printf( "Wartosc wskaznik3 w funkcji wynosi = %d \n \n", * wskaznik3 );
    ( * wskaznik3 ) = 5;
    printf( "wskaznik3 w funkcji po zmienieiu na 5 wynosi = %d \n ", * wskaznik3 );
}

int main()
{
   
    int numer1;
    int numer2;
   
    int * wskaznik1;
   
    int * wskaznik2;
   
    int * wskaznik3;
   
    scanf( "%d", & numer1 );
   
    printf( "\nnumer1 = %d \n", numer1 );
    printf( "numer1 = %d \n \n", & numer1 );
   
   
    wskaznik1 = & numer1;
   
    wskaznik2 = & numer1;
   
    wskaznik3 = wskaznik2;
   
    printf( "wskaznik1 = %d \n", * wskaznik1 );
    printf( "wskaznik2 = %d \n \n", * wskaznik2 );
   
    printf( "Adres wskaznik2 wynosi = %d \n", wskaznik2 );
    printf( "Adres na ktory wskazuje wskaznik2 wynosi = %d \n", & wskaznik2 );
    printf( "Wartosc wskaznik2 wynosi = %d \n \n", * wskaznik2 );
   
   
    printf( "wskaznik3 wskazujacy na wskaznik2 = %d \n", * wskaznik3 );
   
    numer2 = * wskaznik3;
   
    printf( "numer2 = %d \n \n", numer2 );
   
   
    jabol( wskaznik3 );
   
    printf( "wskaznik3 po funkcji wynosi = %d \n ", * wskaznik3 );
   
}


A to co on wyswietla po wprowadzeniou liczby 2:

2

numer1 = 2
numer1 = 2686736

wskaznik1 = 2
wskaznik2 = 2

Adres wskaznik2 wynosi = 2686736
Adres na ktory wskazuje wskaznik2 wynosi = 2686732
Wartosc wskaznik2 wynosi = 2

wskaznik3 wskazujacy na wskaznik2 = 2
numer2 = 2

Adres wskaznik3 w funkcji wynosi = 2686736
Adres na ktory wskazuje wskaznik3 w funkcji wynosi = 2686704
Wartosc wskaznik3 w funkcji wynosi = 2

wskaznik3 w funkcji po zmienieiu na 5 wynosi = 5
 wskaznik3 po funkcji wynosi = 5

Process returned 34 (0x22)   execution time : 0.703 s
Press any key to continue.


Kurcze i mam problem bo sam juz nie wiem co oznacza zastosowanie przy wyswietlaniu & * i nie stosowanie tego
A dokladniej jak w   printf("numer1 = %d \n \n",&numer1); usylem & to przy odpaleni uprogramu wyswietla numer1 = 2686736    ,a w linii
printf("Adres na ktory wskazuje wskaznik2 wynosi = %d \n",&wskaznik2);    wyswietla Adres na ktory wskazuje wskaznik2 wynosi = 2686732 a powinno chyba byc to samo :/

Moje rozumowanie to ze :
bez & i * pokazuje numer komórki (na ktora pokazuje tez wskaznik czy ta zmienna)
z & pokazuje numer komórki,
z * wyciaga wartosc z komórki ,


Wiec jak z tym jest prosze o pomoc?
z góry dziękuję.
 
P-98258
pekfos
» 2013-12-04 14:45:17
&wskaznik2 to adres wskaźnika, a nie jego wartość.
P-98261
quatromen
Temat założony przez niniejszego użytkownika
» 2013-12-04 15:47:49
a jak wyswietlam samo wskaznik2 to pokazuje 2686736 czyli ze co to jest ? bo jedynie przyporzadkowuje wskaznik = &numer1 czyli adres komorki zmiennej numer1 czyli  jak to rozumowac ?? ze w komorce o nazwie wskaznik3 jest przetrzymywany adres komorki numer 1 ??
P-98269
pekfos
» 2013-12-04 16:01:12
ze w komorce o nazwie wskaznik3 jest przetrzymywany adres komorki numer 1 ??
No po to są wskaźniki, żeby trzymać adresy. Jaki tam wstawisz, taki jest.
P-98270
quatromen
Temat założony przez niniejszego użytkownika
» 2013-12-04 16:07:22
Wielkie dzięki :)
P-98272
« 1 »
  Strona 1 z 1