ANSI C 5

ANSI C 5



5 WSKAŹNIKI I TABLICE

Jeżeli wskaźnik ip wskazuje na zmienną całkowitą x, to *ip może wystąpić wszędzie tam, gdzie może wystąpić X, a więc na przykład    !


*ip = *ip4-10;    '

zwiększa obiekt wskazywany przez ip o 10.    I

Jednoargumentowe operatory & i * wiążą silniej niż operatory arytmetyczne, zatem w przypisaniu

y = *jp + 1    |.

najpierw bierze się wartość obiektu, na który wskazuje ip, dodaje do niej 1 i wynik przypisuje zmiennej y. Natomiast zwiększenie tego obiektu, na który wskazuje ip, można zapisać tak:    1

*ip += 1

lub tak:

+4-*ip

lub jeszcze inaczej:    |

(*ip)++

W tym ostatnim przypadku nawiasy są niezbędne: bez nich efektem obliczenia byłoby zwiększenie wskaźnika ip, a nie obiektu wskazywanego przez ip, gdyż operacje określone przez jednoargumentowe operatory * i 4-4- są wykonywane od prawej strony do lewej.    Jfc]

Na koniec, wskaźniki są zwykłymi zmiennymi, mogą więc być używane bez adresowania pośredniego. Dla przykładu, jeśli iq jest innym wskaźnikiem do obiektów typu int, to

• • iq = ip

kopiuje zawartość ip do iq sprawiając, że iq będzie wskazywać na to samo, naC'1 wskazuje ip.


Wskaźniki i argumenty funkcji

W języku C argumenty są przekazywane przez wartość. Nie ma więc bezpośrednie?0 sposobu na to, aby wywołana funkcja mogła zmienić wartość zmiennej należą#

5.2 WSKAŹNIKI I ARGUMENTY FUNKCJI do funkcji wywołującej. Na przykład podprogram sortujący mógłby cami dwa nieuporządkowane elementy za pomocą funkcji swap. Nie wystarczy jednak napisać

swap(a, b);

jeśli funkcja swap jest zdefiniowana następująco:

void swap(int x, int y) /*ZLE */

{

int temp;

temp = x; x = y; y = temp;

Na skutek przekazywania argumentów przez wartość funkcja ta nie ma dostępu do argumentów a i b należących do wywołującego ją podprogramu. Powyższa funkcja swap jedynie zamienia miejscami wartości kopii argumentów a i b.

Jedyny sposób na osiągnięcie zamierzonego celu polega na przekazaniu przez program wywołujący wskaźników do obiektów, których wartości należy zamienić miejscami:

swap(&a, &b);

Operator & daje adres zmiennej, zatem &a jest wskaźnikiem do a. Deklarując w samej funkcji swap parametry jako wskaźniki, otrzymujemy - za ich pomocą - pośredni dostęp do rzeczywistych argumentów operatora adresu.

void swap(int *px, int *py) /* zamień miejscami *px i *py */ {

int temp;

temp = *px;

*px = *py;

*py = temp;

}

133


Wyszukiwarka

Podobne podstrony:
ANSI C 5 5 WSKAŹNIKI I TABLICE /* swap: zamień miejscami v[i] i v[j] */ void swap(char *v[], int i
IMAG0123 Cd ROŚLINA WSKAŹNIKOWA Rośliny wskazujące na gleby bogate wazot; -    cykori
86 Dawid Kościewicz żetowej. ale także nieustającą poprawę podstawowych wskaźników, wiele wskazuje n
img249 2 22 Część I. Wprowadzenie do ekonomii 7. Jeżeli cenowa elastyczność popytu na dobro EcP = -0
SCAN0552 1. Jeżeli przywódca kładzie nacisk na utrzymanie dystansu, to przydają mu się: V  &nbs
SCN08 Wnioski 1.    Jeżeli układ równań AX = b nie jest kramerowski, to nie może
=> dewiacyjne - pewnego rodzaju odchylenie, jeżeli wpływa ono negatywnie na skutki pracy to trzeb
Tw. 5 (Weie rstr assa): Jeżeli funkcja f jest ciągła na przedziale domkniętym <a; b> to 1"
Dostęp do elementu: jeżeli element jest umieszczony na końcu listy, to aby do niego dotrzeć, trzeba
19 Funkcje zespolone. Twierdzenie 4.2. Jeżeli funkcja f jest ciągła na krzywej gładkiej C, to I f(z)
25 Wyznaczanie parametrów ruchu. edytora tekstu. Jeżeli program będzie oczekiwał na liczbę całkowitą
Fale materii Jeżeli światło ma dwoistą falowo-cząsteczkową naturę, to być może materia też ma taką
ANSI C 5 1 ELEMENTARZ odpowiedni parametr jako wskaźnik i za jego pomocą pośrednio odwoływać się d
ANSI C 4 WSKAŹNIKI I TABLICE Wskaźnik jest zmienną, która zawiera adres innej zmiennej. W języku C
ANSI C 6 5 WSKAŹNIKI I TABLICE _ Obrazowo wygląda to tak: 5 2 WSKAŹNIKI I ARGUMENTY FUNKCJI w miej
ANSI C 7 5 WSKAŹNIKI I TABLICE Ćwiczenie 5.1. Tak jak została napisana, funkcja getint traktuje zn
ANSI C 8 5 WSKAŹNIKI I TABLICE Między nazwą tablicy a wskaźnikiem jest jednak istotna różnica, o k
ANSI C 9 5 WSKAŹNIKI I TABLICE______—-- alloc i afree jest stosem lub listą LIFO (ang. last-in, fi
ANSI C 0 5 WSKAŹNIKI I TABLICE o specjalną wartość wskaźnikową. Stała NULL jest zdefiniowana w

więcej podobnych podstron