Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

strlen() vs. sizeof() em C: Entendendo Diferenças e Uso Correto

O que é strlen()

Em C, strlen() retorna o número de caracteres em uma string terminada em nulo, excluindo o terminador '\0'. Ela conta caracteres alfabéticos, dígitos, símbolos e espaços.

Este artigo explica o papel de strlen(), sizeof() e por que eles se comportam de forma diferente.

O que é sizeof()

O operador sizeof retorna o tamanho, em bytes, de seu operando. É avaliado em tempo de compilação para tipos estáticos e em tempo de execução para arrays de comprimento variável. Aplica-se a todos os tipos de dados C, incluindo primitivos, ponteiros, structs e uniões. O resultado é do tipo size_t, um tipo inteiro sem sinal garantidamente grande o suficiente para conter o tamanho do maior objeto.

Como o tamanho de tipos como int ou double pode variar entre sistemas de 32 e 64 bits, sizeof garante portabilidade.

Diferenças Principais

Sintaxe de strlen()

size_t comprimento = strlen(minha_string);

Aqui, minha_string é um array de caracteres ou ponteiro para uma string terminada em nulo.

Exemplo de strlen()

#include <stdio.h>
#include <string.h>
int main() {
    char strng[] = "January";
    printf("Comprimento da string dada é: %zu\n", strlen(strng));
    return 0;
}

Saída:

Comprimento da string dada é: 7

Sintaxe de sizeof()

1) sizeof(tipo)

sizeof(tipo) retorna o tamanho do tipo especificado.

#include <stdio.h>
#define meu_sizeof(tipo) ((char*)(&tipo+1) - (char*)&tipo)
int main() {
    double x;
    printf("%zu", meu_sizeof(x));
    return 0;
}

Saída:

8

2) sizeof(variável)

Passe um nome de variável para obter sua pegada de memória.

#include <stdio.h>
int main() {
    printf("sizeof(char) = %zu\n", sizeof(char));
    return 0;
}

Saída:

sizeof(char) = 1

3) sizeof(expressão)

Avalia o tamanho do tipo de uma expressão sem calcular seu valor.

#include <stdio.h>
int main() {
    char p = 'S';
    double q = 4.65;
    printf("Tamanho da variável p: %zu\n", sizeof(p));
    printf("Tamanho de uma expressão: %zu\n", sizeof(p+q));
    int a = (int)(p+q);
    printf("Tamanho de expressão convertida explicitamente: %zu\n", sizeof(a));
    return 0;
}

Saída:

Tamanho da variável p: 1
Tamanho de uma expressão: 8
Tamanho de expressão convertida explicitamente: 4

Comparação Visual

strlen() vs. sizeof() em C: Entendendo Diferenças e Uso Correto

Abaixo está um resumo lado a lado dos dois construtos.

Característica strlen() sizeof()
Arquivo de header string.h Nenhum necessário (operador embutido)
Propósito Calcular comprimento da string (excluindo nulo) Determinar tamanho de memória de tipo ou variável
Tipo de retorno size_t size_t
Tempo de avaliação Tempo de execução (pode percorrer a string) Tempo de compilação (exceto VLA)
Aplicável a Apenas arrays de caracteres ou ponteiros para strings terminadas em nulo Todos os tipos de dados e expressões

Quando Usar Qual

Seguir estas diretrizes garante código C eficiente, portável e de fácil manutenção.

Linguagem C

  1. Amianto vs. Fibra de Vidro: Diferenças-Chave, Usos e Considerações de Segurança
  2. Structs vs. Unions em C: Guia Prático
  3. C# vs C++: Comparação Clara de Recursos, Desempenho e Casos de Uso
  4. C vs. C++: Principais Diferenças e Quando Escolher Cada Um
  5. C vs Java: Comparação Abrangente de Recursos, História e Aplicações
  6. Python vs JavaScript: Principais Diferenças, Recursos e Quando Escolher Cada Um
  7. Python vs Ruby: Comparação Abrangente de Recursos, Vantagens e Casos de Uso
  8. Entendendo Motores CC vs CA: Diferenças Principais e Guia de Compra
  9. Brasagem vs Solda Branda: Principais Diferenças Explicadas
  10. Motores 2 Tempos vs 4 Tempos: Diferenças Principais Explicadas