[C] Wskaźnik w języku C

michalalex132
Użytkownik
Użytkownik
Posty: 86
Rejestracja: 7 wrz 2013, o 16:18
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 14 razy

[C] Wskaźnik w języku C

Post autor: michalalex132 »

Witam.

Jak można interpretować poniższy fragment?

Kod: Zaznacz cały

 

*a++ = 0x01; 
*a++ = 0x01;

Ostatnio zmieniony 18 mar 2015, o 09:44 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C] Wskaźnik w języku C

Post autor: kalwi »

To po prawej to po prostu 1;
To po lewej odczytaj jako: zwiększ o 1, wyłuskaj zawartość (jeśli dobrze pamiętam operator inkrementacji ma większy priorytet od wyłuskania)

Czyli masz sobie jakiś adres, zwiększasz go o 1 i tam przypisujesz wartość 1.

Mam nadzieję, że nie pomieszałem.

edit: oczywiście Dasio ma rację
Ostatnio zmieniony 18 mar 2015, o 11:48 przez kalwi, łącznie zmieniany 1 raz.
Awatar użytkownika
Dasio11
Moderator
Moderator
Posty: 10225
Rejestracja: 21 kwie 2009, o 19:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 40 razy
Pomógł: 2362 razy

[C] Wskaźnik w języku C

Post autor: Dasio11 »

Z jednym drobiazgiem: wyższy priorytet inkrementacji spowoduje tylko, że ++ odniesie się do a zamiast do *a, ale inkrementacja jest postfiksowa, więc wykona się później. W efekcie instrukcja *a++ = 0x01 zapisuje pod adres wskazywany przez a liczbę 0x01 i potem zwiększa a o jeden.
ODPOWIEDZ