[Primer conocimiento del lenguaje C] puntos de conocimiento básico y uso de sizeof y strlen

1.tamaño de

(1) Si desea encontrar el tamaño del espacio ocupado por la cadena, incluido el '\ 0' predeterminado al final de la cadena.
(2) Si lo que busca no es el tamaño de una cadena, lo que busca es el tamaño de una matriz, tipo, etc., sin considerar '\ 0', porque no es una cadena, hay sin '\ 0' predeterminado al final.
(3) Si obviamente aparece '\ 0', cuéntelo.
(4) Devuelve el tamaño de una variable o tipo (en bytes)

2.strlen

Encuentre el tamaño del contenido de la cadena, cuente el número de caracteres en la cadena, deje de contar cuando encuentre '\ 0' y no cuente '\ 0'.

3. Puntos de conocimiento

3.1 Para matrices

sizeof: el resultado es el tamaño de la matriz.
strlen: Se recorrerá toda la matriz durante el cálculo y es posible que no se encuentre '\ 0' cuando se recorra más tarde. Habrá un problema fuera de límites. El programa se bloqueará o se generarán valores aleatorios el resultado debe tener al menos la longitud de la matriz.

3.1.1 No hay '\ 0' en la matriz

#include <stdio.h>

int main()
{
    
    
	char s[] = {
    
     'a', 'b', 'c' };
	printf("%d\n", sizeof(s));
	printf("%d\n", strlen(s));//随机值

	return 0;
}

Inserte la descripción de la imagen aquí

3.1.2 La matriz tiene '\ 0'

(1) '\ 0' está al final

#include <stdio.h>

int main()
{
    
    
	char s[] = {
    
     'a', 'b', 'c', '\0' };
	printf("%d\n", sizeof(s));
	printf("%d\n", strlen(s));

	return 0;
}

Inserte la descripción de la imagen aquí

(2) '\ 0' está en el medio

#include <stdio.h>

int main()
{
    
    
	char s[] = {
    
     'a', 'b','\0','c', };
	printf("%d\n", sizeof(s));
	printf("%d\n", strlen(s));

	return 0;
}

Inserte la descripción de la imagen aquí

3.2 Para cuerdas

3.2.1 La cadena no tiene un '\ 0' obvio

#include <stdio.h>

int main()
{
    
    

	printf("%d\n", sizeof("abcd"));
	printf("%d\n", strlen("abcd"));

	return 0;
}

Inserte la descripción de la imagen aquí

3.2.2 La cadena tiene un '\ 0' obvio

(1) '\ 0' está al final

#include <stdio.h>

int main()
{
    
    
	printf("%d\n", sizeof("abd\0"));
	printf("%d\n", strlen("abd\0"));

	return 0;
}

Inserte la descripción de la imagen aquí

(2) '\ 0' está en el medio

#include <stdio.h>

int main()
{
    
    
	printf("%d\n", sizeof("abc\0d"));
	printf("%d\n", strlen("ab\0d"));

	return 0;
}

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_46630468/article/details/113200852
Recomendado
Clasificación