Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wyrażenia, które odwołują się do lokalizacji pamięci są nazywane wyrażeniami „l-wartości”. Wartość l reprezentuje wartość "lokalizatora" regionu magazynu lub wartość "lewą", co oznacza, że może pojawić się po lewej stronie znaku równości (=
). L-wartości są często identyfikatorami.
Wyrażenia odwołujące się do modyfikowalnych lokalizacji są nazywane "modyfikowalnymi wartościami l". Modyfikowalna wartość l nie może mieć typu tablicy, niekompletnego typu ani typu z atrybutem const
. Aby struktury i związki mogły być modyfikowalne wartości l, nie mogą mieć żadnych elementów członkowskich z atrybutem const
. Nazwa identyfikatora oznacza lokalizację pamięci, podczas gdy wartość zmiennej jest wartością przechowywaną w tej lokalizacji.
Identyfikator jest l-wartością, którą można modyfikować, jeśli dotyczy lokalizacji w pamięci i jeśli jego typem jest typ arytmetyczny, struktura, unia lub wskaźnik. Na przykład, jeśli ptr
jest wskaźnikiem do regionu pamięci, *ptr
jest modyfikowalną l-wartością, która określa region pamięci wskazywany przez ptr
.
Każde z następujących wyrażeń C może być wyrażeniem l-wartości:
Identyfikator typu całkowitego, zmiennoprzecinkowego, wskaźnika, struktury lub unii
Wyrażenie indeksu dolnego (
[ ]
), które nie daje wartości tablicyWyrażenie wyboru elementu członkowskiego (
->
lub.
)Wyrażenie jednoargumentowe (
*
) nie odwołujące się do tablicyWyrażenie l-wartości w nawiasach
const
Obiekt (niemodyfikowalna wartość l))
„R-wartość” jest czasami używana do opisywania wartości wyrażenia i odróżniania jej od l-wartości. Wszystkie l-wartości są r-wartościami, ale nie wszystkie r-wartości są l-wartościami.
Specyficzne dla firmy Microsoft
Microsoft C zawiera rozszerzenie standardu ANSI C, które umożliwia rzutowanie wartości l do użycia jako wartości l, o ile rozmiar obiektu nie jest wydłużany przez rzutowanie. (Aby uzyskać więcej informacji, zobacz Konwersje rzutów typu). Poniższy przykład ilustruje tę funkcję:
char *p ;
short i;
long l;
(long *) p = &l ; /* Legal cast */
(long) i = l ; /* Illegal cast */
Ustawieniem domyślnym dla firmy Microsoft C jest to, że rozszerzenia firmy Microsoft są włączone. Użyj opcji /Za kompilatora, aby wyłączyć te rozszerzenia.
END Microsoft Specific