strlen()是求字符的长度,字符串中有多少字符就输出几,不包括结束符‘\0’;
sizeof()是求其在内存中的长度。
sizeof(str)=4;因为str是指针啊。所有指针都占四个字节。
如果要输出6,那应该是sizeof(“12345”);
1、strlen函数是返回字符长度(以空字符为结束符)
所以是5
2、sizeof(str);返回是指定变量占用空间大小
str是指针变量,指针大小为4,所以返回4
你可以把str变成数组
char str[]="12345";
此时str是数组,所以sizeof(str)返回的是6
strlen()函数返回不包含结束符的长度
sizeof(str)得到的是类型char*的长度
如果定义是:
char str[]="12345";
那么sizeof(str)就是6了
你定义的是指针变量,他的sizeof(str)就是4,这是规定
要是换成数组就不是啦,就和你想的一样啦
char str[] = “12345”
char *str = "12345"
含义不同,
char str[] = “12345”是字符数组,str里有‘1’‘2’‘3’‘4’‘5’‘\0’。每个字符许一个字节,所以为 6个字节。
char *str = "12345"含义是,指针str指向"12345",str的值是"12345"中首字符的‘1’地址。
也就是说,用char *str = "12345"比char str[] = “12345”
多分配了一个存储地址的空间,用于存储字符数组的首地址,这个存储空间是多大(占有几个字节)?一般32位机器和现行的编译器,指针的长度一般指定为4个字节,记住就是了。
strlen求长度不包含‘\0’。