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 也就是 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'
更多推荐
所有评论(0)