您的位置:首页 > 编程语言 > C语言/C++

strlen、sizeof、length的区别和联系

2017-09-04 19:44 357 查看

                                      strlen、sizeof、length的区别与联系

在网上查阅并整合了一些资料,供自己学习,同时也希望能帮到大家!

以下知识点自己测试出来更能够理解一些:

(1)      sizeof操作符的结果类型是size_t,头文件为typedef,该类型保证能容纳所建立的最大对象的字节大小。
(2)      strlen的头文件为string.h。
(3)      sizeof是操作符,strlen是函数。
(4)      strlen是用来计算字符串的实际长度,不是类型所占内存。
(5)      sizeof的返回值:
①  当参数时一个类型或者变量,sizeof返回实际大小;
int len1 = sizeof(float);  // len1 = 4
int len2 = sizeof(2);   // len2= 4
②   当参数时一个静态数组,sizeof返回全部数组长度;

③  sizeof操作符不能返回动态数组长度大小。
(6)      sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以“\0”结尾的。
sizeof还可以用函数做参数,例如:
      short f( );
      printf(“%d\n”,sizeof( f( ) ) );
     
输出:2  
也就是  sizeof(short)
(7)      数组作为sizeof的参数时,参数不退化,传给strlen就退化为指针。
(8)      不管是类型或是变量的长度,大部分编译程序在编译的时候就把sizeof计算过了,这就是为什么sizeof(f(x))可以用来定义数组维数的原因;
而strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,而不是类型占内存的字节大小,即:
char str[20]=”0123456789”;
int a=strlen(str);  // a=10
int b=sizeof(str)  // b=20
(9)      因为sizeof是操作符,如果参数是类型,就必须加括号,如果是变量名就可以不加,例如: 

float a;
int b=sizeof a;   // b = 4

length函数是针对string类来说的,在标准C里没有length函数,只有C++的string类中才有这个函数,

sizeof("abcd")的值为5

length("abcd")的值为5

strlen("abcd")的值为4   //
不计算后面的'\0'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sizeof strlen length C语言