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 iIMAG0123 Cd ROŚLINA WSKAŹNIKOWA Rośliny wskazujące na gleby bogate wazot; - cykori86 Dawid Kościewicz żetowej. ale także nieustającą poprawę podstawowych wskaźników, wiele wskazuje nimg249 2 22 Część I. Wprowadzenie do ekonomii 7. Jeżeli cenowa elastyczność popytu na dobro EcP = -0SCAN0552 1. Jeżeli przywódca kładzie nacisk na utrzymanie dystansu, to przydają mu się: V &nbsSCN08 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 trzebTw. 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ć, trzeba19 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ę dANSI C 4 WSKAŹNIKI I TABLICE Wskaźnik jest zmienną, która zawiera adres innej zmiennej. W języku CANSI C 6 5 WSKAŹNIKI I TABLICE _ Obrazowo wygląda to tak: 5 2 WSKAŹNIKI I ARGUMENTY FUNKCJI w miejANSI C 7 5 WSKAŹNIKI I TABLICE Ćwiczenie 5.1. Tak jak została napisana, funkcja getint traktuje znANSI C 8 5 WSKAŹNIKI I TABLICE Między nazwą tablicy a wskaźnikiem jest jednak istotna różnica, o kANSI C 9 5 WSKAŹNIKI I TABLICE______—-- alloc i afree jest stosem lub listą LIFO (ang. last-in, fiANSI C 0 5 WSKAŹNIKI I TABLICE o specjalną wartość wskaźnikową. Stała NULL jest zdefiniowana wwięcej podobnych podstron