[C Language-Array] La diferencia entre matriz de cadenas y matriz de caracteres

#define _CRT_SECURE_NO_WARNINGS  1
#pragma warning(disable:6031)

#include<stdio.h>

int main()
{
	char arr1[ ] = "hello";                      // h e l l o \0             
	char arr2[ ] = { 'h','e','l','l','o' };      // h e l l o
	char arr3[ ] = { 'h','e','l','l','o','\0' }; // h e l l o \0

	printf("arr1=%s\n", arr1);//arr1=hello
	printf("arr2=%s\n", arr2);//arr2=hello烫烫烫烫烫蘦ello
	printf("arr3=%s\n", arr3); //arr3 = hello

	printf("arr1=%d\n", strlen(arr1));
	printf("arr2=%d\n", strlen(arr2));
	printf("arr3=%d\n", strlen(arr3));

	return 0;
}

Diferencias en la impresión:

arr1[] es una matriz de cadenas, que es una forma de expresión de matriz especial, que utiliza comillas dobles "" . De forma predeterminada, hay '\0' al final de la cadena hola. printft() solo imprime caracteres antes de \0.

arr2[] es una matriz de caracteres normal, que almacena los cinco caracteres de hola. Sin embargo, printf() solo dejará de imprimir cuando encuentre '\0' durante la impresión, por lo que se imprimirán caracteres confusos después de hola.

arr3[] agrega un '\0' al final, que logra la misma función que arr1, excepto que arr1 agrega '\0' de forma predeterminada, mientras que arr3[] logra la misma función agregándolo manualmente.

Encuentre la diferencia en las longitudes de las matrices:

Lo mismo ocurre al calcular la longitud de la matriz de caracteres: strlen () cuenta el número de caracteres antes de \ 0 y arr2 imprime 21 bytes, que es exactamente el mismo que el número que se muestra al imprimir (un carácter chino ocupa dos bytes) . ).

Supongo que te gusta

Origin blog.csdn.net/ggbb_4/article/details/129175096
Recomendado
Clasificación