C语言中,sizeof和strlen都是表示字符串长度的吗?谁能告诉我它们两者的区别~~

如题所述

sizeof 计算的是数据在内存中存放的长度,单位是“字节”,可以对任何数据类型做运算,而且它是一个运算符(和+、-、*、\类似);当对字符串计算时,包含末尾的"\0";当对字符数组操作时,返回的是数组的总的长度,也就是当把数组作为参数传递给sizeof时是不会退化的。strlen 计算的是字符串的长度,单位是“字符”,只能对字符串运算,而且它是函数(不是运算符),计算时,不包含末尾的"\0";当对字符数组操作时,返回的是数组总存放的字符串的实际长度(也就是\0之前的),也就是当把数组作为参数传递给strlen时是会退化成char*指针的。例如:char* str = "Hello!";sizeof(str)值为7;strlen(str)值为6;char str[20] = "Hello!";sizeof(str)值为20;strlen(str)值为6;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-22
把是sizeof 是整个变量的大小 strlen 是字符串的大小(strlen 是首地址进行计数直至遇到'\0' 停止计数):如char buffer[50]="hello world"; ("hello world" d字符后会追加个'\0'字符)printf("%d, %d \n",sizeof(buffer),strlen(buffer)); 结果为50, 11
相似回答