Em C, a função MEMSET () é usada para definir um valor de um byte em um byte de bloco de memória por byte. Esta função é útil para a inicialização de um byte de bloco de memória por byte por um valor específico. Neste artigo, veremos em detalhes como essa função pode ser usada. Então vamos começar.
Arquivo de cabeçalho:
corda.hSintaxe:
void *MEMSET (void *str, int ch, size_t n)Esta função define o primeiro n bytes do bloco de memória apontados por str por CH.
Argumentos:
A função leva 3 argumentos:
Valores de retorno:
MEMSET () Retorna o primeiro endereço do bloco de memória de onde ele começa a definir o valor.
Exemplos:
//Exemplo 1.c
No exemplo1.C, declaramos uma matriz de caracteres do tamanho 30. Então nós inicializamos com a string “ABCD EFGH.”Na função de Memset, passamos 3 argumentos str, 'x' e 3. Portanto, o bloco de memória apontado pelo STR será redefinido os 3 primeiros caracteres por 'x.'Depois de Memset, quando imprimirmos a memória, teremos “xxxd efgh.”
No exemplo2.C, passamos a função STR+4 para MEMSET. Então, redefinir a memória após a 4ª localização do STR. Depois de Memset, quando imprimirmos a memória, obteremos “abcdxxxgh.”
No exemplo3.C, declaramos uma matriz inteira do tamanho 5 e tentando inicializá -lo por 10. Mas, a partir da saída, vimos que a matriz não é inicializada por 10; Em vez disso, temos o valor "168430090". Isso ocorre porque o valor inteiro é maior que um byte e a função MEMSET converte o valor em um personagem não assinado antes de copiar. Agora, veremos como obteremos o valor “168430090”.
A representação binária de 10 é 00000000 00000000 00000000 00001010.
Quando o número inteiro convertido em char não assinado, o 1 byte inferior é considerado. Portanto, quando 10 é convertido em char não assinado, é uma representação binária 00001010.
Função MEMSET () define o byte de localização da memória por byte. Portanto, um total de 4 bytes será: 00001010 00001010 00001010 00001010.
O valor decimal da representação binária de 4 bytes é 168430090.
// Exemplo4.c
No exemplo4.C, inicializamos a matriz inteira por 0. Todos os bits da representação binária de 0 é 0. Então a matriz é inicializada por 0.
No exemplo5.C, inicializamos a matriz inteira por 0. Todos os bits da representação binária de -1 é 1. Então a matriz é inicializada por -1.
Conclusão:
Neste artigo, vimos usando a função do MEMSET como podemos inicializar ou definir o valor de um bloco de memória com eficiência. Podemos definir qualquer caractere e 0 ou -1 como um valor inteiro para um bloco de memória. A função MEMSET é mais rápida para definir um grande pedaço de memória contígua em comparação com simplesmente definir o local usando um loop.