Kwalifikatory typu
Kwalifikatory typu podać jedną z dwóch właściwości identyfikator.Const typ kwalifikatora deklaruje obiekt, który będzie się nonmodifiable.volatile Typ kwalifikatora deklaruje element, którego wartość legalnie mogą być zmieniane przez coś poza kontrolą programu, w którym się pojawia, takich jak równolegle wykonywany wątek.
Kwalifikatory, należy wpisać dwa const i volatile, może wystąpić tylko raz w deklaracji.Kwalifikatory typu mogą być wyświetlane z dowolnym specyfikatora typu; Jednakże nie może występować po pierwsze przecinek w wielu deklaracji elementu.Na przykład następujące deklaracje są prawnych:
typedef volatile int VI;
const int ci;
Deklaracje te nie są prawnych:
typedef int *i, volatile *vi;
float f, const cf;
Kwalifikatory typu są istotne tylko wtedy, gdy dostęp do identyfikatorów jako l wartości w wyrażeniach.Zobacz L-wartość i wartość wyrażenia informacji o wartości l i wyrażeń.
Składnia
- Typ kwalifikatora:
constvolatile
Oto prawnych const i volatile deklaracje:
int const *p_ci; /* Pointer to constant int */
int const (*p_ci); /* Pointer to constant int */
int *const cp_i; /* Constant pointer to int */
int (*const cp_i); /* Constant pointer to int */
int volatile vint; /* Volatile integer */
Specyfikacja typu array zawiera typ kwalifikatory, kwalifikuje się element, nie typ tablicy.Jeśli specyfikacja typu funkcji zawiera kwalifikatory, zachowanie jest niezdefiniowane.Ani volatile ani const ma wpływ na zakres wartości lub arytmetyczne właściwości obiektu.
Ta lista opisuje sposób używania const i volatile.
Const można użyć słowa kluczowego, aby zmodyfikować dowolnego typu podstawowych lub zbiorczej lub wskaźnik do obiektu dowolnego typu, lub typedef.Jeśli element jest zadeklarowany tylko z const typ kwalifikatora, jego typ przyjmuje się const int.A const zmienną można zainicjować lub mogą być umieszczane w regionu pamięci tylko do odczytu.Const słowo kluczowe jest przydatne w przypadku zgłaszania odsyłacze do const , ponieważ wymaga funkcji nie należy zmieniać wskaźnik w jakikolwiek sposób.
Kompilator zakłada, że w dowolnym miejscu programu, volatile zmienna jest możliwy przez nieznany proces, który używa lub modyfikuje wartość.W związku z tym, niezależnie od optymalizacje, określonym w poleceniu wiersza kodu dla poszczególnych przydziałów lub odniesienie do volatile zmienna musi zostać wygenerowany, nawet jeśli wydaje się, aby nie mają żadnego wpływu.
Jeśli volatile jest używany samodzielnie, int zakłada, że.volatile Specyfikatora typu może służyć do zapewnienia niezawodny dostęp do lokalizacji pamięci specjalne.Użyj volatile z obiektów danych, które mogą być dostępne lub zmieniony przez programy obsługi sygnału, przez równocześnie wykonywanych programów lub specjalnego sprzętu, takich jak mapowane w pamięci We/Wy rejestry sterowania.Można zadeklarować zmienną jako volatile dla jego użytkowania, lub można rzutować pojedynczy odwołania do volatile.
Towar może być zarówno const i volatile, w którym to przypadku element nie może być legalnie zmodyfikowany przez własny program, ale może zostać zmodyfikowany przez niektóre proces asynchroniczny.