Kurs programowania w C cz. 95

Nasza ocena:

5
Wyświetleń: 581
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Kurs programowania w C cz. 95 - strona 1

Fragment notatki:

112 ROZDZIAŁ 17. WSKAŹNIKI (czyli np. znaku czy liczby) w pamięci komputera. Dokładniejszą definicję możesz znaleźć w  Wikipedii. Operowanie na wskaźnikach By stworzyć wskaźnik do zmiennej i móc się nim posługiwać należy przypisać mu odpowiednią wartość (adres obiektu, na jaki ma wskazywać). Skąd mamy znać ten adres? Wystarczy zapytać nasz komputer, jaki adres przydzielił zmiennej, którą np. wcześniej gdzieś stworzyliśmy. Robi się to za pomocą operatora  &  (operatora pobrania adresu). Przeanalizuj następujący ko d1: #include  int main (void) { int liczba = 80; printf("Zmienna znajduje sie pod adresem: %p, i przechowuje wartosc: %d\n", (void*)&liczba, liczba); return 0; } Program ten wypisuje adres pamięci, pod którym znajduje się zmienna oraz wartość jaką kryje zmienna przechowywana pod owym adresem. Aby móc zapisać gdzieś taki adres należy zadeklarować zmienną wskaźnikową. Robi się to poprzez dodanie  *  (gwiazdki) po typie na jaki zmienna ma wskazywać, np.: int *wskaznik1; char *wskaznik2; float*wskaznik3; Niektórzy programiści mogą nieco błędnie interpretować wskaźnik do typu jako nowy typ i uważać, Å¼e jeśli napiszą: int* a,b,c; to otrzymają trzy wskaźniki do liczby całkowitej. Tymczasem wskaźnikiem będzie tylko zmienna a, natomiast b i c będą po prostu liczbami. Powodem jest to, Å¼e â€gwiazdka” odnosi się  do zmiennej  a nie do typu. W tym przypadku trzy wskaźniki otrzymamy pisząc: int *a,*b,*c; Aby uniknąć pomyłek, lepiej jest pisać gwiazdkę tuż przy zmiennej: int *a,b,c; albo jeszcze lepiej nie mieszać deklaracji wskaźników i zmiennych: int *a; int b,c; 1Warto zwrócić uwagę na rzutowanie do typu  wskaźnik na void . Rzutowanie to jest wymagane przez funkcję  printf , gdyż ta oczekuje, Å¼e argumentem dla formatu %p będzie właśnie  wskaźnik na void , gdy tymczasem w naszym przykładzie wyrażenie &liczba jest typu  wskaźnik na int .

(…)

… 112
ROZDZIAŁ 17. WSKAŹNIKI
(czyli np. znaku czy liczby) w pamięci komputera. Dokładniejszą definicję możesz
znaleźć w Wikipedii.
Operowanie na wskaźnikach
By stworzyć wskaźnik do zmiennej i móc się nim posługiwać należy przypisać mu
odpowiednią wartość (adres obiektu, na jaki ma wskazywać). Skąd mamy znać ten
adres? Wystarczy zapytać nasz komputer, jaki adres przydzielił zmiennej, którą np.
wcześniej gdzieś stworzyliśmy. Robi się to za pomocą operatora & (operatora pobrania
adresu). Przeanalizuj następujący kod1 :
#include <stdio.h>
int main (void)
{
int liczba = 80;
printf("Zmienna znajduje sie pod adresem: %p, i przechowuje wartosc: %d\n",
(void*)&liczba, liczba);
return 0;
}
Program ten wypisuje adres pamięci, pod którym znajduje się zmienna oraz wartość
jaką kryje zmienna przechowywana pod owym adresem.
Aby móc zapisać gdzieś taki adres należy zadeklarować zmienną wskaźnikową. Robi
się to poprzez dodanie * (gwiazdki) po typie na jaki zmienna ma wskazywać, np.:
int *wskaznik1;
char *wskaznik2;
float*wskaznik3;
Niektórzy programiści mogą nieco błędnie interpretować wskaźnik do typu jako
nowy typ i uważać, że jeśli napiszą:
int* a,b,c;
to otrzymają trzy wskaźniki do liczby całkowitej. Tymczasem wskaźnikiem będzie tylko
zmienna a, natomiast b i c będą po prostu liczbami. Powodem jest to, że ”gwiazdka”
odnosi się do zmiennej a nie do typu. W tym przypadku trzy wskaźniki otrzymamy
pisząc:
int *a,*b,*c;
Aby uniknąć pomyłek, lepiej jest pisać gwiazdkę tuż przy zmiennej:
int *a,b,c;
albo jeszcze lepiej nie mieszać deklaracji wskaźników i zmiennych:
int *a;
int b,c;
1 Warto zwrócić uwagę…
… pod owym adresem.
Aby móc zapisać gdzieś taki adres należy zadeklarować zmienną wskaźnikową. Robi
się to poprzez dodanie * (gwiazdki) po typie na jaki zmienna ma wskazywać, np.:
int *wskaznik1;
char *wskaznik2;
float*wskaznik3;
Niektórzy programiści mogą nieco błędnie interpretować wskaźnik do typu jako
nowy typ i uważać, że jeśli napiszą:
int* a,b,c;
to otrzymają trzy wskaźniki do liczby całkowitej
... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz