C语言中,sizeof能求字符串长度吗?

为什么我用sizeof(str)/sizeof(str[0])算出来结果都是8,无论这个字符串的长度是多少结果都是8。

sizeof计算对象的大小是转换成对象类型的计算,也就是说,同种类型的不同对象其sizeof值都是一致的。

所以sizeof(str[])相当于sizeof(char)=1

另一个sizeof(str)相当于sizeof(char *),对于这种指针类型,在32位计算机中,一个指针变量的返回值通常是4(注意结果是以字节为单位),在64位系统中指针变量的sizeof通常为8,所以当你的系统是64位时,sizeof(str)=sizeof(char *)=8

如:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-16
sizeof是计算所占用内存大小的函数,sizeof(str)表示的是一个指针的大小。
要想求字符串长度要用strlen(str)。
第2个回答  2020-04-16
不能,在C语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符。求字符串长度用strlen()函数。
相似回答