当前位置:妙知谷 >

母婴教育 >学习交流 >

strlen 与sizeof()的区别

strlen 与sizeof()的区别

这两个都是计算机语言,strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符''为止,然后返回计数器值(长度不包含"")。sizeof()是运算符,可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,它不需要用圆括号。它在编译时起作用,而不是运行时。

strlen 与sizeof()的区别

操作方法

(01)sizeof是算符,strlen是函数

strlen 与sizeof()的区别 第2张

(02)sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''''结尾的

strlen 与sizeof()的区别 第3张

(03)sizeof返回定义arr数组时,编译器为其分配的数组空间大小,不关心里面存了多少数据。strlen只关心存储的数据内容,不关心空间的大小和类型。

strlen 与sizeof()的区别 第4张

(04)sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。

strlen 与sizeof()的区别 第5张

(05)如果要获得这个字符串的长度,则一定要使用 strlen,sizeof()函数返回的是变量声明后所占的内存数,不是实际长度。

strlen 与sizeof()的区别 第6张

(06)数组做sizeof的参数不退化,传递给strlen就退化为指针了

strlen 与sizeof()的区别 第7张

(07)sizeof(x)可以用来定义数组维数,大部分编译程序在编译的时候就把sizeof计算过了

strlen 与sizeof()的区别 第8张

(08)数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址

strlen 与sizeof()的区别 第9张
  • 文章版权属于文章作者所有,转载请注明 https://miaozhigu.com/zh-sg/jy/jiaoliu/m22x2y.html