#include <stdio.h>
void main()
{
char s[10]= "abcde",t[]="12345";
printf("%d/n",sizeof(s));
printf("%d/n",sizeof(t));
printf("%d/n",strlen(s));
printf("%d/n",strlen(t));
}
char s[10]= "abcde",t[ ]= "12345"
[10] 编译器按照你的制定 分配长度为 10
t[] 编译器不知道长度 但根据"12345" 知道内容长度 为5+1=6
5+1 是因为 字符串以字符'/0' 作为结束标志
但你不用管 是编译器自动添加的
sizeof()求数组的长度,第一个数组指定了数组的长度为10,没有指定数组长度,会默认的将初始值的长度当做该数组的长度,“12345”加一个“/0”长度为6,strlen()求的是数组的实际长度(不含/0),所以用strlen求的长度 两个都是5