字符串长度怎么计算(sizeof)? 5

为什么不是显示个位数,而且每次执行的结果都不一样?怎么变成随机数了?卧槽脑抽了应该是printf(“%d\n%d”,i,j);但是怎么变随机数了。。... 为什么不是显示个位数,而且每次执行的结果都不一样?怎么变成随机数了?
卧槽脑抽了应该是 printf(“%d\n%d”,i,j);
但是怎么变随机数了。。
展开
 我来答
帐号已注销
2021-06-22 · TA获得超过77.1万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:167万
展开全部

sizeof是求类型的大小,不管是表达式还是后面直接加类型;换种说法是在其后表达式在内存中占用的字节。

p是char *类型,当然是4字节。

改为char p[] = "hello";

这就是后面字符串的长度。

sizeof(p);求得是指针p的大小,不管你上面是任何类型,任何字符串,都是4,因为指针的空间大小就是4;

char *p="hello";//改成char p[]="hello";

cout<<sizeof(p);//结果是6,字符串后面还有个'\0'字符

cout<<strlen(p); //结果是5,忽略此字符

字符串在存储上类似字符数组

它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。

通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。

设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

以上内容参考:百度百科-字符串

可爱小不点year
2017-09-02 · TA获得超过803个赞
知道小有建树答主
回答量:859
采纳率:89%
帮助的人:785万
展开全部
sizeof 计算的是数据在内存中存放的长度,单位是“字节”,可以对任何数据类型做运算,而且它是一个运算符(和+、-、*、\类似);当对字符串计算时,包含末尾的"\0";当对字符数组操作时,返回的是数组的总的长度,也就是当把数组作为参数传递给sizeof时是不会退化的。strlen 计算的是字符串的长度,单位是“字符”,只能对字符串运算,而且它是函数(不是运算符),计算时,不包含末尾的"\0";当对字符数组操作时,返回的是数组总存放的字符串的实际长度(也就是\0之前的),也就是当把数组作为参数传递给strlen时是会退化成char*指针的。例如:char* str = "Hello!";sizeof(str)值为7;strlen(str)值为6;char str[20] = "Hello!";sizeof(str)值为20;strlen(str)值为6;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式