1.这里的题,sizeof(str)应该是指数组str[16]的大小,suzeof(s),则是*s指针的s地址大小,地址应该是int型的,所以大小为4字节,而str[16]是char型,所以大小为16字节,总共20字节。
2.sizeof求的是字符串在内存中的长度,最后加上`\0'。strlen表示字符串的长度,最后不加’\0’。
所以在计算长度时,strlen(str)的长度会比sizeof(str)长度少1
str是数组,用sizeof能得到数组长度16
s只是char*指针类型,sizeof得到长度只是指针自身所占空间长度4
所以总共是20
快乐鹦鹉 @“s只是char*指针类型,sizeof得到长度只是指针自身所占空间长度4” 指针指向char不是应该占一个长度? 还是看s=str所以长度是4?
“多一少一”问题占程序员常犯错误的10%以上!
避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断,掰手指头心算验证一下程序到底应该写为
x、x-1、x+1中的哪个?
<、<=、==、>、>=中的哪个?
虽然和sizeof没啥关系。