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.
Um ponteiro para um tipo de valor pode ser convertido em um ponteiro para um tipo diferente. No entanto, o resultado pode ser indefinido devido aos requisitos de alinhamento e tamanhos de diferentes tipos de armazenamento. Um ponteiro para um objeto pode ser convertido em um ponteiro para um objeto cujo tipo requer um alinhamento de armazenamento menor ou igualmente rigoroso e voltar novamente sem alterações.
Um ponteiro para void pode ser convertido de ou para um ponteiro para qualquer tipo, sem restrição ou perda de informações. Se o resultado for convertido de volta para o tipo original, o ponteiro original será recuperado.
Se um ponteiro for convertido em outro ponteiro com o mesmo tipo, mas com qualificadores diferentes ou extras, o novo ponteiro será o mesmo que o antigo, exceto para restrições impostas pelo novo qualificador.
Um valor de ponteiro também pode ser convertido em um valor integral. O caminho de conversão depende do tamanho do ponteiro e do tamanho do tipo integral, de acordo com as seguintes regras:
Se o tamanho do ponteiro for maior ou igual ao tamanho do tipo integral, o ponteiro se comportará como um valor não assinado na conversão, exceto que ele não pode ser convertido em um valor flutuante.
Se o ponteiro for menor que o tipo integral, o ponteiro será primeiro convertido em um ponteiro com o mesmo tamanho do tipo integral e, em seguida, convertido no tipo integral.
Por outro lado, um tipo integral pode ser convertido em um tipo de ponteiro de acordo com as seguintes regras:
Se o tipo integral tiver o mesmo tamanho que o tipo de ponteiro, a conversão simplesmente fará com que o valor integral seja tratado como um ponteiro (um inteiro não assinado).
Se o tamanho do tipo integral for diferente do tamanho do tipo de ponteiro, o tipo integral será primeiro convertido para o tamanho do ponteiro, usando os caminhos de conversão fornecidos nas tabelas Conversão de Tipos Integrais Assinados e Conversão de Tipos Integrais Não Assinados. Em seguida, é tratado como um valor de ponteiro.
Uma expressão constante integral com valor 0 ou tal expressão convertida para tipo void* pode ser convertida por um tipo moldado, por atribuição ou por comparação com um ponteiro de qualquer tipo. Esta operação produz um ponteiro nulo que é igual a outro ponteiro nulo do mesmo tipo, mas não é igual a qualquer ponteiro para uma função ou um objeto. Números inteiros diferentes da constante 0 podem ser convertidos em tipo de ponteiro, mas o resultado não é portátil.