首页 > 编程知识 正文

c语言运算符的优先级顺序表,c语言strlen和sizeof的区别

时间:2023-05-06 10:36:13 阅读:155759 作者:4450

关于strlen和sizeof的区别:

1. strlen是函数,sizeof是运算符。

2. strlen测量字符的实际长度,并以“”结束。 不包括“”。 相反,sizeof测量字符的分配大小,如果未分配大小,则以“”结尾,长度为“”,即strlen测量的长度加1。 如果已经分配了内存大小,则返回分配的内存大小。

例如:

char str[]='Hello World '; char str1[100]='Hello World '; coutstrlen(str ) endl; coutsizeof(str ) endl; coutsizeof(str1) endl;

3 .但是,在子函数中,ziseof会将从主函数传递的字符数组视为指针。 指针的大小是由机器决定的,不是人为决定的。

# include iostream # include string # includelimitsusingnamespacestd; voidfun(charstr[10] ) cout sizeof (str ) endl; } int main () charstr ) )='Helloworld '; fun(str; 返回0; }

4 .我们知道字符数组的初始化可以一次分配,也可以一个一个地分配。 可以指定数组的大小,也可以不指定数组的长度。

# include stdio.h # include string.hint main ({ char str1[ ]=' hello '; char str2[]={'h ',' e ',' l ',' l ',' o ',''}; char str3[]={'h ',' e ',' l ',' l ',' o'}; printf(str1:%s(n ),str1); printf(str2:%s(n )、str2); printf(str:%s(n )、str3); printf(str1:%d(n ),strlen ) str1); printf(str2:%d(n ),strlen ) str2); 打印(str : % d (n ),strlen ) str3); 返回0; }

为什么会这样呢?

因为已知字符串将“”作为结束标志,所以char str1[ ]='hello”表示char str2[ ]={'h ',' e ',' l ',' l ',' o ',' ' strlen函数求出字符串的实际长度。 其求法直到遇到第一个“”为止。 如果只定义为未给出初始值,则该结果是不确定的,在遇到“”之前,从开头地址开始继续寻找。 如果在初始化字符数组时不使用,则strlen获得的值不是正确的值,打印的结果也不是预期的结果。 因此,为了避免这种情况,必须在初始化时标记,或者记住一次分配初始值。

5.strlen的结果在运行时计算,用于计算字符串的长度,类型并不占用内存大小。 大多数编译器在编译时计算了sizeof是类型还是变量的长度。

6.sizeof可以在类型中创建参数,strlen只能在char*中创建参数,并且必须以“' '”结尾。

原文链接: https://blog.csdn.net /行政qijun _/article/details/51815081

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。