c语言中strlen 与sizeof有什么区别?

char a[10]="abcd"; sizeof(a)为10为什么?字符不是才一个字节吗?不是应该为5吗?

strlen 是返回字符串的长度。
而sizeof,却是用来取得变量或类型所占用的内存大小的。
这个a数组的字符串长度为4(末尾的\0是不计入字符串长度的),但a是10个单位的char型,它占用的内存空间是10*sizeof(char),为10. sizeof 返回的数量的单位是Byte.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-28
因为strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。 而sizeof()返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen是函数。
第2个回答  2011-08-23
strlen可以得到字符串长度。sizeof可以得到内存字节长度

数组有10个char型成员,自然有10的字节长度
第3个回答  2011-08-27
strlen 是返回所定义字符串的长度,而sizeof是用来取得变量或类型所占用的内存空间大小的。
相似回答