W podanym przykładzie zmienne b i c należy wcześniej wypełnić wartościami, a może być puste, gdyż najpierw przyjmuje wartość zmiennej b:
a = b; wiec b musi posiadać jakaś wartość. Potem przyjmuje wartość zmiennej c:
a = c; więc c musi posiadać jakąś wartość. Następnie następuje wymiana wartości zapisanej w zmiennej c na wartość zmiennej b:
c = b; więc b musi posiadać jakąś wartość. Zmienna
a nigdy nie jest używana. Wartość zmiennej b nie ulega zmianie.
Dla tego przykładu stosowanie wskaźników niczego nie wnosi, gdyż mamy tutaj zwykłą wymianę wartości między zmiennymi. Ostateczny wynik to wszystkie zmienne przechowują wartość zmiennej b, więc można to zapisać tak:
- Kod: Zaznacz cały
int a, b = 10, c = 25;
a = b = c = b;
Ten zapis daje taki sam wynik, ale przebieg jest inny:
c = b;
b = c;
a = b;
Takie zapisy są nieprawidłowe. Powinno być raczej coś takiego:
- Kod: Zaznacz cały
int t = 10, p, *k;
k = &t; /* wskaźnik typu int 'k' wskazuje na obszar pamięci zajmowany przez zmienną 't' */
p = *k; /* zmiennej 'p' zostaje przypisana wartość spod adresu wskazywanego przez 'k' */
Jest to bardziej optymalne niż przepisywanie wartości z jednej zmiennej do drugiej, więc i szybsze.