问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请教C语言长度问题!!!

发布网友 发布时间:2024-10-02 08:54

我来回答

4个回答

热心网友 时间:2024-10-17 05:24

strlen的返回值是字符串的长度。
s3只是字符数组,不是字符串。返回值当然是错误的

热心网友 时间:2024-10-17 05:24

你的理解是错的。
strlen的原理,就是从开始的地方向后找,遇到\0就停止,但是那个\0不计入长度。
所谓的字符串,就是以\0结尾的一段字符。
当你打"Hello!",后面会自动补\0,所以s1和s2在内存里是一样的。
但是s3的长度为14,纯属偶然。因为s3后面的字符你不知道是什么(实际上发生了数组越界),偶然遇到一个\0就停了。你可以试试printf("%s",s3),看看后面是乱的字符,14只是个偶然。

记得采纳~追问char s[ ]="Hello!" 为字符串,有7个元素,因为最后一个字符串结束符\0不计入长度
,所以长度也为6,正确吗?

追答这句话是对的。
但char s2[ ]={'H','e','l','l','o','!','\0'};也是字符串。所谓字符串,就是以'\0'结尾的一串字符。

学C语言一定要有一个概念,就是C语言是很底层的语言,很多操作都是赤果果的内存操作。比如
strlen,他的参数其实就是一个指针,从这个指针所指向的内存开始向后找,遇到'\0'就停止,并计数。所以说,字符串和字符数组的区别,就是最后有没有'\0',这实际上只是一个约定。

还有问题可以向我求助,或用hi给我发消息。我清华信院的,这个是本行。

记得采纳

热心网友 时间:2024-10-17 05:25

C语言的字符串实质是\0结尾的字符数组,一个6字节的字符串,其实际占用内存必须7字节,但字符串长度是6位,\0是结束符)。
例中:
S1是典型的字符串赋值,长度是6,编译器自动加上\0,并该数组分配了7个字节。
S2是字符数组赋值,因你在最后一位给出\0结尾符,因此该数组分配7字节,strlen函数(它认为参数是字符串)判断字符串长度是6
S3亦是字符数组赋值,因你并未明确给出\0结尾符,实际该数组只分配6字节,strlen函数自参数所给出地址开始遍历内存,直到第15个字节处才找到一个\0,实际遍历范围已经超出你定义的数组的边界,是典型的内存泄漏情形

实际上,如果你把S1[]地址加1之后赋值给strlen函数,它将给出5。追问char s[ ]="Hello!" 长度到底多少,如何理解?

追答作为一个字符数组,该数组的元素个数为7;作为字符串该字符串长度为6,对于字符串来讲\0不被计入字符串长度。
使用这种声明和初始化语句,编译器将其视为字符串赋值,它的实际操作是分配一个7字节的字符数组、并在初始赋值时将第7个数组元素(S[6])赋值为\0。

例如:char S[ ]={'1', '2', '3', '\0', '4', '5', '6', '\0', '7', '8', '9', '\0'};
该字符数组是12个元素,但是strlen(S) 的返回结果将是3,strlen函数将视S[3]中的\0为该字符串的结束符。

热心网友 时间:2024-10-17 05:25

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。
而这句char s3[ ]={'H','e','l','l','o','!'};是没有给s3[]加上'\0'的,所以一直扫描知道有'\0'
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么叫补按揭 后按揭贷款什么意思 买房者续按揭有什么危害 加按揭是什么意思 八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? C语言 请教一下下面程序的其中一段是怎么执行的? C语言请教... 双侧乳腺腺体不厚,内部结构紊乱,回声增强,两腋窝有低回声光团,请问严重... 2024中级经济师报考条件有什么好处 手机pay是什么意思手机pay介绍 为什么电脑屏幕出现横细条纹,如何去除? 什么是讲黄河故事 更新软件的时候 ,提示您的Apple ID已被停用,怎么办?下载其它软件又可以... ...中国建设银行时显示ID已被停用,但下载其它软件没有问题? 从长安北站到深圳褔田口岸怎么做车 从长莞长安北站到深圳松岗地铁站都经过那里 浙江平面口罩机的价格 目前有资质的口罩生产厂家哪个好啊? 真情难枕是谁唱的? 小天鹅全自动洗衣机洗衣环节工作正常,脱水和甩干部分滚筒不能工作的原因... 辅酶Q10的每日建议剂量是多少?听听权威的consumerlab怎么说 谁知道日本进口畅销食品hscoq10是什么? 河南农相亲里的(换表期)(看好)(下礼)是什么意思?我是外地的我对河南的... 抖币怎么换成微信零钱?怎么换回人民币? syNeo free款的效果怎么样 美柚红色是什么意思? 请教下C语言高手,程序老是报错 `a' was not declared in this scope... “整治社会治安 构建和谐社会”为主题的实践报告(1000字左右) 韩红管彤结婚接吻相片怎么回事 装solidworks2010时选择安装产品都选上了,右下角所需估计安装空间为4.8G... solidworks2010哪个版本好用 solidworks2010破解出现问题!!! solidworks2010模板怎么用的啊? 微信朋友圈陌生人能不能看到十张照片? 微信朋友圈陌生人的照片不能看了?? ...如潮的国产游戏背后,竟是靠着利用玩家来获取好评的... 无线鼠标没反应是什么原因? 巡更点是什么意思 ...公历2012/5/5 18点30分 出生,望高手不吝赐教给起个名字。急,急... 万利达话筒和奇声话筒哪个好用 主机怎么与虚拟机vboxlinux系统共享文件 饭店取什么名字好 有海鲜 本帮菜 有伤口可以吃汤圆么 用打磨机伤我的嘴巴外面动了手术一个月了可不可以吃汤圆? 企业所属行业代码查询