Pergunta: Compreendendo o tamanho indefinido de "void"
Na programação C, a palavra-chave "void" representa uma ausência de tipo. Isso levanta a questão: qual é o tamanho de "void"?
Resposta:
O tipo "void" não tem tamanho definido em C. Não é um tipo válido para objetos ou ponteiros, portanto, tentar usá-lo como tal levaria a um erro de compilação. Especificamente, a instrução:
void n;
é inválida porque tenta declarar uma variável de tipo void, o que não é permitido.
Extensão: Alocação e aritmética de ponteiros com ponteiros "void"
Embora "void" não tenha tamanho, ele pode ser usado como um tipo para ponteiros. No entanto, esses ponteiros não apontam para nenhum tipo ou tamanho específico de dados.
A instrução:
void *p = malloc(sizeof(void));
resultados em um erro em tempo de compilação porque tentar alocar memória para um tipo "void" não faz sentido. A função malloc requer um tipo de dados válido para alocar memória.
No GCC, a expressão sizeof(void) surpreendentemente é avaliada como 1. Embora possa parecer que atribui um tamanho a "void", é apenas um detalhe de implementação no qual não se deve confiar.
Além disso, a aritmética do ponteiro p em um ponteiro "void" é indefinida e não deve ser usada. Isso ocorre porque o tipo de dado apontado por p é desconhecido, tornando impossível determinar o que significaria incrementar o ponteiro.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3