pp wyklad1 ppt

background image

Programowanie w C

Wykład 1

Temat: Wskaźniki

background image

Gdzie wykorzystywane są wskaźniki?

• Praca z tablicami

• Funkcje – zmiana wartości przesyłanych argumentów

• Dostęp do specjalnych komórek pamięci

• Rezerwacja obszarów pamięci

background image

Definiowanie wskaźników

Definiowanie wskaźników:

typ_obiektu

*nazwa_wskaźnika

;

nazwa_wskaźnika

wskazuje na obiekty typu

typ_obiektu

.

Przykłady
Można definiować wskaźniki do obiektów różnych typów:

int *wi;
char *wch;
float *wf;

Uwaga:

• Wskaźnik, który pokazuje na obiekt jednego typu, nie może być wykorzystany
do pokazywania na obiekt innego typu.

background image

Wskaźniki

Sama definicja wskaźnika nie powoduje, że wskaźnik wskazuje na konkretny
obiekt. Po zdefiniowaniu wskaźnika należy go ustawić:

int *wi;
int i;

wi=&i

; //ustawienie wskaźnika w na obiekt i

Jeśli wskaźnik wskazuje na konkretny obiekt, można odnosić się do tego obiektu
za pomocą wskaźnika. Do operacji tej służy jednoargumentowy

operator

odniesienia (wyłuskania)

*

:

*

nazwa_wskaźnika

;

Przykład:

int *wi; //definicja wskaźnika
int i=3; //definicja zmiennej i

wi=&i; //ustawienie wskaźnika
printf(”%d”,

*wi)

;

//odniesienie do obiektu,
//na który wskazuje wskaźnik w

*wi

=5;

Jaką wartość ma zmienna

i

?

background image

Wskaźniki – cd

Przykłady:

int i, j = 3;
int *wi, *wj;

wi = &i;

i = 5;
printf("%d\n", *wi);

// 5

*wi = 7;
printf("%d\n", i);

// 7

wj = wi;
printf("%d\n", *wj);

// 7

wi = &j;
printf("%d\n", *wi);

// 3

j = *wj;
printf("%d\n", j);

// 7

background image

Wskaźniki typu

void

void *wv;

Definicja wskaźnika

bez podania typu obiektu

, na jaki wskazuje. Może być użyty

do wskazywania na obiekty dowolnego typu.

Przykłady:

void *wv;
int *wi;
float *wf;

wv=wi

; //teraz wskaźnik wv wskazuje na ten sam obiekt (typu int),

//na który wskazuje wskaźnik wi

wv=wf

;

wi=wf //kompilator zasygnalizuje błąd!!
wi=

(int *)

wf; //wykorzystanie

rzutowania

wf=

(float *)

wv; //wykorzystanie

rzutowania

Wskaźnik dowolnego (niestałego) typu można przypisać wskaźnikowi typu

void

.

Działanie odwrotne wymaga operatora rzutowania.

background image

Zastosowanie wskaźników do tablic

int *wsk; //definicja wskaźnika
int tab[10]; //definicja tablicy

wsk=

&

tab[indeks]; //ustawienie wskaźnika na elemencie tablicy

//o indeksie indeks

wsk=&tab[0];
wsk=tab;

wsk=

&

tab[indeks];

wsk=

wsk+ind

;

wsk

+=

ind

;

//przesunięcie wskaźnika o ind pozycji

instrukcje równoważne

Dodanie do wskaźnika liczby całkowitej

ind

powoduje, że wskaźnik pokazuje

o

ind

elementów dalej w tablicy; niezależnie od tego, jakiego typu są elementy

tablicy.

background image

Zastosowanie wskaźników do tablic – cd

Przykład:

void main(){

int i;
float *wf;
float tab[10];
wf=tab; //lub wf=&tab[0];
for(i=0; i<10; i++)

*(wf++)=i/10.0;

for(i=0,wf=tab;i<10;i++,wf++)

printf(”%f”,*wf);

}

background image

Nazwa tablicy i wskaźnik

Nazwa tablicy jest jednocześnie

adresem

jej zerowego elementu.

To stwierdzenie nie jest równoważne stwierdzeniu:

Nazwa tablicy jest jednocześnie wskaźnikiem do jej zerowego elementu.

Nazwa tablicy jest stałym wskaźnikiem do jej zerowego elementu.

float *wsk;
float tab[10];

wsk=tab; //wsk=&tab[0];
//

możliwe

jest przypisanie

wsk++;
//

niemożliwa

jest instrukcja

tab++;

tab[ind];
*(tab+ind
);

możliwe zastosowania

Wskaźnik jest pewnym obiektem w pamięci (to znaczy posiada swój adres).
Nazwa (również tablicy) nie jest obiektem (nie ma więc adresu).

float *wsk;

&wsk

; //

adres wskaźnika

– odwołanie poprawne


Document Outline


Wyszukiwarka

Podobne podstrony:
pp wyklad2 ppt
pp wyklad3 ppt
pp wyklad5 ppt
pp wyklad4 ppt
Proces pielęgnowania wykład 3 ppt
wyklad 2(1) ppt
Wsparcie jako element procesu pielęgnowania wykład ppt
Wyklad4 ppt
PP wykład w pigułce
PP wyklad' 03 2011r
pp wykłady, psychologia moje
pp wykłady 4 styczeń
PP wykłady
PP wyklad 02 2011r

więcej podobnych podstron