sizeof与strlen的区别

sizeof与strlen的区别charstr 20 0 int nbsp nbsp a strlen str a 10 strlen 计算字符串的长度 以 为字符串结束标记 int nbsp nbsp b sizeof str b 20 sizeof 计算的则是分配的数组 str 20 所占的内存空间的大小 不受里面存储的内容影响

输出:

首先说明一点,char类型占一个字节,所以sizeof(char)是1,这点要理解

str1是一个指针,只是指向了字符串”absde”而已。所以sizeof(str1)不是字符串占的空间也不是字符数组占的空间,而是一个字符型指针占的空间。所以sizeof(str1)=sizeof(char*)=4,在C/C++中一个指针占4个字节

str2是一个字符型数组。C/C++规定,对于一个数组,返回这个数组占的总空间,所以sizeof(str2)取得的是字符串”absde”占的总空间。”absde”中,共有a b s d e \0六个字符,所以str2数组的长度是6,所以sizeof(str2)=6*sizeof(char)=6

str3已经定义成了长度是8的数组,所以sizeof(str3)为8

str4和str2类似,’0′ ‘1’ … ‘9’加上’\0’共11个字符,所以ss占的空间是8

2.sizeof是算符,strlen是函数。

4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。

6.strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小。

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

上面是对静态数组处理的结果,如果是对指针,结果就不一样了

型的,占了 1 位

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214646.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午3:46
下一篇 2026年3月18日 下午3:47


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号