sizeof(x), 是计算x占多少内存。char x[]="string" 有6个字符外加一个看不见的字符串结束符,共7个。x[0]=0; ASCII 码 0 就是null, 就是字符串结束符。strlen(x) 返回字符串长度,长度是不计入字符串结束符的,所以得0。printf("%d%d --- 是70。 sizeof(x) 返回7,strlen(x) 返回0
sizeof(x)得到x定义时的字节大小,"string"有6个字节,再加上一个结束符'\0',等于7.strlen(x)得到字符串x的长度,由于第一个数据x[0]=0,已经是字符串结束符,表示字符串长度是0.所以打印出来就是70
sizeof和strlen是有区别的,最好记的方法,sizeof就是当前元素所占内存数,而strlen,所见即所得,就是你看见有几位就是几,这下懂了吧,char x[]初始化为string了,而字符串会自动在结尾加上\0代表结束,所以string6为加\0的1位就是7,而'\0'就是0啊,所以x[0] = 0就已经结束了,如果0不是以字符形式存在或者以int类型存储,代表的就是结束,所以strlen为0 追问 如果0是以字符形式存在或者以int类型存储,代表的就是结束吧? 追答 0以Ascii形式存储代表的是结束,int类型的0的Ascii是48哦。。。