今天做题,有一个关于字符数组和字符串后面结束符的问题,就自己手写了一个代码跑了一下。结果表明:
- 字符数组长度正好等于字符个数,或者没有声明字符数组的长度的情况下,sizeof的值就等于字符个数。
- 字符数组声明的长度大于字符个数的情况下,超出的部分都用结束符’\0’来替代,所以sizeof的值等于字符数组声明的长度。
- 如果字符数组里面写的是字符串,那就是后面会加上一个结束符‘\0’,sizeof的值就是字符个数+1。
手写了一个简单的代码验证了一下:
#include<stdio.h>
int main()
{
char str0[4] = {'1','2','4','3'};
char str1[] = {'1','2','4','3'}; //后面不会主动加上\0,sizeof就是4
char str2[10] = {'1','2','4','3'}; //后面没有数字的都加上\0,所以sizeof就是10
char str3[] = {"1243"}; //字符串后面就有\0,所以sizeof就是5
int len0 = sizeof(str0);
int len1 = sizeof(str1);
int len2 = sizeof(str2);
int len3 = sizeof(str3);
printf("%d\n",len0);
printf("%d\n",len1);
printf("%d\n",len2);
printf("%d\n",len3);
return 0;
//输出结果是4 4 10 5
}