strlen 与sizeof()的区别
发布日期:2021-05-06 23:05:07 浏览次数:25 分类:精选文章

本文共 755 字,大约阅读时间需要 2 分钟。

这个总结的更好:

 

strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。  

char aa[10];cout<
<

 

sizeof()返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen是函数。 

sizeof(aa) 返回10 int a[10]; sizeof(a) 返回40 

1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 

2.sizeof是操作符(关键字),strlen是函数。 

3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。 

 

sizeof还可以用函数做参数,比如: 

short f(); printf("%d\n", sizeof(f()));  //输出的结果是sizeof(short),即2。 

 

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

5.大部分编译程序 在编译的时候就把sizeof计算过了是类型或是变量的长度

char str[20]="0123456789"; int a=strlen(str); //a=10; int b=sizeof(str); //而b=20; 

 

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

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

 

上一篇:c++ 浅拷贝和深拷贝
下一篇:分门别类刷leetcode——链表(C++实现)

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月13日 10时46分07秒