[C 언어 배열] 문자열 배열과 문자 배열의 차이점

#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;
}

인쇄물의 차이점:

arr1[] 은 큰따옴표 "" 를 사용하는 특수 배열 표현식 형식인 문자열 배열입니다 . 기본적으로 hello 문자열 끝에 '\0'이 있습니다. printft()는 \0 앞의 문자만 인쇄합니다.

arr2[]는 5개의 문자 hello를 저장하는 일반 문자 배열입니다. 그러나 printf()는 인쇄 중에 '\0'을 만나면 인쇄를 중지하므로 hello 이후에 잘못된 문자가 인쇄됩니다.

arr3[]은 끝에 '\0'을 추가합니다. 이는 arr1이 기본적으로 '\0'을 추가하는 반면 arr3[]은 수동으로 추가하여 동일한 기능을 수행한다는 점을 제외하면 arr1과 동일한 기능을 수행합니다.

배열 길이의 차이를 찾으십시오.

문자 배열의 길이를 계산할 때도 마찬가지인데, strlen()은 \0 이전의 문자 개수를 세고, arr2는 21바이트를 출력하는데, 이는 출력으로 표시한 숫자와 똑같다(한자 1개가 2바이트를 차지한다) . ).

추천

출처blog.csdn.net/ggbb_4/article/details/129175096