
C++字符串长度与字节的问题
#include<iostream>usingnamespacestd;voidmain(){char*str="12345";cout<<strlen(str)<<"\...
#include<iostream>
using namespace std;
void main()
{
char* str="12345";
cout<<strlen(str)<<"\t"<<sizeof(str);
}
为什么输出结果是 5 4 ?不是应该有结束符的吗,长度不是应该为6吗???字节怎么还变成4了?不是6嘛? 展开
using namespace std;
void main()
{
char* str="12345";
cout<<strlen(str)<<"\t"<<sizeof(str);
}
为什么输出结果是 5 4 ?不是应该有结束符的吗,长度不是应该为6吗???字节怎么还变成4了?不是6嘛? 展开
5个回答
展开全部
strlen()是求字符的长度,字符串中有多少字符就输出几,不包括结束符‘\0’;
sizeof()是求其在内存中的长度。
sizeof(str)=4;因为str是指针啊。所有指针都占四个字节。
如果要输出6,那应该是sizeof(“12345”);
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
所以是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)得到的是类型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’。
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’。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询