sizeof e strlen na linguagem C são dois operadores/funções comumente usados, mas suas funções e usos são muito diferentes.
tamanho de
sizeof é uma palavra-chave em linguagem C, sizeof é um operador usado para calcular o tamanho de qualquer tipo ou objeto em bytes. Ele pode ser usado para calcular o tamanho de tipos de dados, como arrays, estruturas, ponteiros, etc., e pode até mesmo ser usado para calcular o tamanho da memória de todo o programa.
Por exemplo, o código a seguir demonstra como usar sizeof para calcular o tamanho de uma variável do tipo int:
int x = 5;
printf("Size of int: %zu bytes\n", sizeof(int));
printf("Size of x: %zu bytes\n", sizeof(x));
A saída é:
Size of int: 4 bytes
Size of x: 4 bytes
Como você pode ver, o resultado retornado por sizeof é o tamanho do tipo int, que é 4 bytes.
Além de calcular o tamanho das variáveis, sizeof também pode ser usado para calcular o tamanho de arrays, estruturas e outros tipos de dados. Por exemplo, o código a seguir demonstra como usar sizeof para calcular o tamanho de um array char:
char arr[10];
printf("Size of char array: %zu bytes\n", sizeof(arr));
A saída é:
Size of char array: 10 bytes
Suplemento 1:
sizeof é calculado com base no tipo no cálculo do tamanho; se o operando de sizeof for uma expressão, a expressão não participa do cálculo; sizeof (
o resultado do operador já terá resultado após a conclusão da compilação , e a expressão O cálculo da fórmula começa após a geração do programa executável)
Por exemplo o seguinte código:
//sizeof 在计算大小的时候,其实是根据类型推算的
//sizeof的操作数如果是一个表达式,表达式的不参与计算的!!!
int main()
{
short s = 10;//占2个字节
int i = 2; //占4个字节
int n = sizeof(s = i + 4);//截断
printf("%d\n", n);//2
printf("%d\n", s);//
return 0;
}
O resultado da corrida é
2
10
Suplemento 2: sizeof (nome do array), o nome do array representa o array inteiro, aqui sizeof calcula o tamanho do array inteiro, a unidade é bytes.
Suplemento 3: Quando sizeof (nome do array) é usado dentro de uma função diferente de main(), o nome do array aqui representa um endereço.
Strlen
strlen é uma função de biblioteca padrão da linguagem C, incluída no arquivo de cabeçalho <string.h>. É usado para calcular o comprimento de uma string, excluindo o caractere nulo ('\0'). Esta função aceita uma string como argumento e retorna o comprimento da string.
Por exemplo, o código a seguir demonstra como usar strlen para calcular o comprimento de uma string:
char str[] = "Hello, world!";
printf("Length of str: %zu\n", strlen(str));
A saída é:
Length of str: 12
Como você pode ver, o resultado retornado por strlen é o número real de caracteres na string, excluindo caracteres nulos.
Deve-se observar que strlen só pode ser usado para calcular o comprimento de strings e não pode ser usado para calcular o tamanho de outros tipos de dados. Além disso, strlen precisa percorrer toda a string ao calcular o comprimento da string até encontrar um caractere nulo, portanto, se houver um caractere nulo ('\0') na string, poderá produzir resultados inesperados.
Comparado
por exemplo:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "Hello,world!";
int a = sizeof(str);
int b = strlen(str);
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
A saída é:
13
12
Isso ocorre porque sizeof calcula o tamanho de bytes de todo o array. O array str[] é um array do tipo caractere. Um caractere ocupa um byte. Há 13 caracteres no total (10 letras, 2 pontos de pontuação, 1 '\0') , então o valor de a é 13; e strlen apenas calcula o comprimento da string e para de calcular quando encontra '\0', então o valor de b é 12.