字符串长度怎么计算(sizeof)? 5
为什么不是显示个位数,而且每次执行的结果都不一样?怎么变成随机数了?卧槽脑抽了应该是printf(“%d\n%d”,i,j);但是怎么变随机数了。。...
为什么不是显示个位数,而且每次执行的结果都不一样?怎么变成随机数了?
卧槽脑抽了应该是 printf(“%d\n%d”,i,j);
但是怎么变随机数了。。 展开
卧槽脑抽了应该是 printf(“%d\n%d”,i,j);
但是怎么变随机数了。。 展开
展开全部
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中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
以上内容参考:百度百科-字符串
展开全部
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;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询