【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[] は通常の文字配列で、hello の 5 文字が格納されていますが、printf() は印刷中に '\0' に遭遇した場合にのみ印刷を停止するため、hello の後に文字化けが印刷されます。

arr3[] は最後に「\0」を追加し、arr1 と同じ機能を実現します。ただし、arr1 はデフォルトで「\0」を追加しますが、arr3[] は手動で追加することで同じ機能を実現します。

配列の長さの違いを見つけます。

文字配列の長さを計算する場合も同様で、strlen() は \0 より前の文字数をカウントし、arr2 は print で表示される数値とまったく同じ 21 バイトを出力します (漢字 1 文字は 2 バイトを占めます) )。

おすすめ

転載: blog.csdn.net/ggbb_4/article/details/129175096