strlen、sizeof、length的区别和联系

                                      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   也就是  sizeofshort

(7)      数组作为sizeof的参数时,参数不退化,传给strlen就退化为指针。

(8)      不管是类型或是变量的长度,大部分编译程序在编译的时候就把sizeof计算过了,这就是为什么sizeoffx))可以用来定义数组维数的原因;

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'








发布了37 篇原创文章 · 获赞 23 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/zsheng_/article/details/77841013