Udostępnij za pośrednictwem


Kwalifikatory typów

Kwalifikatory typu nadają identyfikatorowi jedną z dwóch właściwości.Kwalifikator typu const deklaruje obiekt niemodyfikowalny.Kwalifikator typu volatile deklaruje element, którego wartość legalnie może być zmieniana przez coś pozostające poza kontrolą programu, w których występuje, na przykład wątek wykonywany jednocześnie.

Oba kwalifikatory typu const i volatile, mogą wystąpić tylko raz w deklaracji.Kwalifikatory typu mogą się pojawić z dowolnym specyfikatorem typu; jednakże nie mogą występować po pierwszym przecinku w deklaracji wielu elementów.Na przykład następujące deklaracje są poprawne:

typedef volatile int VI;
const int ci;

Te deklaracje są niedozwolone:

typedef int *i, volatile *vi;
float f, const cf;   

Kwalifikatory typu są istotne tylko podczas dostęp do identyfikatorów jako wartości l w wyrażeniach.Zobacz Wyrażenia wartości L i wartości R, aby uzyskać informacje dotyczące wartości l i wyrażeń.

Składnia

  • type-qualifier:
    constvolatile

Poniżej przedstawiono prawne deklaracje const i volatile:

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        */

Jeśli specyfikacja typu tablicowego zawiera kwalifikatory typu, kwalifikuje się element, nie typ tablicy.Jeśli specyfikacja typu funkcji zawiera kwalifikatory, zachowanie jest niezdefiniowane.Ani volatile, ani const nie wpływają na zakres wartości arytmetycznych lub właściwości, lub obiekt.

Poniższa lista opisuje jak używać const i volatile.

  • Słowo kluczowe const może być użyte do modyfikowania dowolnego typu podstawowego lub agregowanego, lub wskaźnika do obiektu dowolnego typu, lub typedef.Jeśli element jest zadeklarowany tylko za pomocą kwalifikatora typu const, jego typ, uważa się za const int.Zmienna const może być zainicjowana lub może być wprowadzone w regionie pamięci tylko do odczytu.Słowo kluczowe const jest przydatne w przypadku deklarowania wskaźników do const, jako że jest wymagane, aby funkcja nie zmieniała wskaźnika w jakikolwiek sposób.

  • Kompilator zakłada, że dowolny nieznany proces w dowolnym miejscu programu, może uzyskać dostęp do zmiennej volatile, używać jej lub modyfikować jej wartość.W związku z tym, niezależnie od optymalizacji określonej w wierszu polecenia, kod dla poszczególnych przypisań lub odwołań do zmiennej volatile musi zostać wygenerowany, nawet jeżeli wydaje się, że nie ma żadnego wpływu.

    Jeśli volatile jest stosowany samodzielnie, jest zakładany int.Specyfikator typu volatile służy do zapewniania niezawodnego dostępu do specjalnych lokalizacji pamięci.Należy użyć volatile z obiektami danych, które są dostępne lub zmieniane przez programy obsługi sygnałów, przez współbieżne wykonywanie programów lub specjalny sprzęt, taki jak mapowane w pamięci We/Wy rejestry sterowania.Można zadeklarować zmienną jako volatile dla jej okresu istnienia, lub można rzutować pojedyncze odwołanie do volatile.

  • Element może być zarówno const oraz volatile i w takim przypadku nie można legalnie zmodyfikować elementu przez własny program, ale może go zmodyfikować jakiś proces asynchroniczny.

Zobacz też

Koncepcje

Deklaracje i typy