C语言中strlen()和sizeof()的区别
先看下面的一个程序
#include<stdio.h>
#include<string.h>
#define PRAISE "My name is Bai Jiangwei"
int main(void)
{
char name[40] = "BaiJiangWei";
printf("%u %u \n",strlen(name),sizeof(name));
printf("%u %u \n",strlen(PRAISE),sizeof(PRAISE));
}
程序的结果如下
11 40
23 24
Press any key to continue
结论
- 对于一个字符串变量,strlen()的结果是字符串本身的长度,在本例中BaiJiangWei长度为11;而sizeof(name)的结果是该字符串变量在定义时的长度,在本例中char name[40],故sizeof(name)结果为40
- 对于一个字符串常量,我们定义时并没有定义其长度,所以strlen()的结果就是字符串本身长度,而sizeof()的结果是strlen()+1,多出来的长度1,实际上就是\0