在学习C语言时以及面试中,经常会见到strlen()与sizeof()这一对容易混淆的概念,搞清楚这两个概念,往往考察了编程人员对语言的基本掌握能力。
首先大家先明确两个概念是:
1.strlen()是函数,而sizeof()是表面看起来像函数的关键字。
2.Strlen()求得是长度,针对的对象是字符串,而sizeof()求的是大小针对的是类型
之所以二者经常混淆,那是由于在使用过程中未能正确区分哪个是求长度,哪个是求大小,下面就具体讲解sizeof()与strlen()在各种情况下的长度与大小。
情况1:
void main()
{
char str[]=”hello C”;
printf(“strlen()=%d ”,strlen(str));
printf(“sizeof()=%d ”,sizeof(str));
}
运行结果:strlen()=7
sizeof()=8
由于在用字符初始化数组时,系统会在字符串末尾自动加上一个’ ’作为字符的结束标记,因此用sizeof()求出的长度就比strlen()有效长度大1。
情况2:
void main()
{
char str[10]=”hello C”;
printf(“strlen()=%d ”,strlen(str));
printf(“sizeof()=%d ”,sizeof(str));
}
执行结果:strlen()=7
sizeof()=10
数组名str代表了整个空间的大小,因此sizeof()为10。
情况3:
void main()
{
char str[]={‘h’,’e’,’l’,’l’,’o’,’ ‘,’C’};
printf(“strlen()=%d ”,strlen(str));
printf(“sizeof()=%d ”,sizeof(str));
}
运行结果:strlen()=11
sizeof()=7
由于在初始化str时没有