Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As expressões que se referem a locais de memória são chamadas de expressões de "valor l". Um valor l representa o valor "localizador" de uma região de armazenamento, ou um valor "esquerda", implicando que ele pode aparecer à esquerda do sinal de igual (=). Os valores L são frequentemente identificadores.
As expressões que se referem a locais modificáveis são chamadas de "valores L modificáveis". Um valor L modificável não pode ter um tipo de matriz, um tipo incompleto ou um tipo com o const atributo. Para que as estruturas e sindicatos sejam valores l modificáveis, eles não devem ter nenhum membro com o const atributo. O nome do identificador indica um local de armazenamento, enquanto o valor da variável é o valor armazenado nesse local.
Um identificador é um valor l modificável se se referir a um local de memória e se seu tipo for aritmético, estrutura, união ou ponteiro. Por exemplo, se ptr for um ponteiro para uma região de armazenamento, então *ptr é um valor l modificável que designa a região de armazenamento para a qual ptr pontos.
Qualquer uma das seguintes expressões C pode ser expressões de valor l:
Um identificador de integral, flutuante, ponteiro, estrutura ou tipo de união
Uma expressão subscrita (
[ ]) que não avalia uma matrizUma expressão de seleção de membros (
->ou.)Uma expressão unary-indirection (
*) que não se refere a uma matrizUma expressão de valor l entre parênteses
Um
constobjeto (um valor l não modificável)
O termo "valor-r" é por vezes usado para descrever o valor de uma expressão e para distingui-lo de um valor l. Todos os valores l são valores r, mas nem todos os valores r são valores l.
Específico da Microsoft
O Microsoft C inclui uma extensão para o padrão ANSI C que permite que versões de valores L sejam usadas como valores l, desde que o tamanho do objeto não seja alongado através da transmissão. Para obter mais informações, consulte Type-Cast conversões. O exemplo a seguir ilustra esse recurso:
char *p ;
short i;
long l;
(long *) p = &l ; /* Legal cast */
(long) i = l ; /* Illegal cast */
O padrão para o Microsoft C é que as extensões da Microsoft estão habilitadas. Use a opção de compilador /Za para desativar essas extensões.
END Específico da Microsoft