Linguagem C - notas sizeof e strlen_study

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.

Guess you like

Origin blog.csdn.net/yjagks/article/details/132293995