wskazniki podstawowy problem
Ostatnio zmodyfikowano 2013-12-04 16:07
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 : #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ę. |
|
pekfos |
» 2013-12-04 14:45:17 &wskaznik2 to adres wskaźnika, a nie jego wartość. |
|
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 ?? |
|
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. |
|
quatromen Temat założony przez niniejszego użytkownika |
» 2013-12-04 16:07:22 Wielkie dzięki :) |
|
« 1 » |