ja często wykorzystywane wskaźniki do const obiektów, tak jak ...Co to są wskaźniki const (w przeciwieństwie do wskaźników do obiektów const)?
const int *p;
To po prostu oznacza, że nie można zmienić liczbę całkowitą, która wskazuje na p
przez p
. Ale widziałem też odniesienie do const wskaźniki, stwierdził tak ...
int* const p;
Jak rozumiem, co oznacza, że zmienna wskaźnik sama jest stała - można zmienić to wskazuje na całkowitą przez cały dzień, ale nie możesz wskazać na coś innego.
Jakie to może mieć zastosowanie?
Drobna nitpick: w przypadku urządzeń mapowanych na pamięć, na pewno (nie "może") trzeba mieć element oznaczony jako lotny - w przeciwnym razie nie można mieć pewności, czy lub kiedy kompilator faktycznie emituje operację odczytu lub zapisu. –
Możesz "potrzebować" niestabilności jest poprawny. Możesz użyć 'barrier()' i innej semantyki w zależności od urządzenia. To prawda, że musisz ostrożnie postępować z wartościami. Tzn. Cache/no-cache, bariera itp. Zależy od typu urządzenia, a ** volatile ** nie zawsze jest najlepszą opcją. –
@MichaelBurr: Zgadzam się z tobą, że 'volatile' powinno z pewnością tam być; z drugiej strony wiele nagłówków dostawców kompilatorów nie wydaje się kłopotać - fakt, który może być nieco denerwujący (ponieważ nawet jeśli kompilatory zwykle robią to, co trzeba, mogą ignorować próby odczytu rejestru, ale nie robią nic z wynik). – supercat