迷猪 发表于 2014-12-24 11:10:25

关于字符数组长度

第二张图为什么长度会出错?难道字符数组只有在定义时初始化赋值之后才能用strlen吗,为什么?

lgd 发表于 2014-12-24 12:04:45

strlen从地址a开始,向后查找第一个为'\0'的位置,并认为他是字符串的结尾!!

我疯狂我成功 发表于 2014-12-24 13:02:09

我的结果是这样子,

月光虾 发表于 2014-12-30 05:40:38

字符型转整不对吧sizeof函数才可以吧,刚学的

月光虾 发表于 2014-12-30 05:45:27

l=sizeof(a);

mxway 发表于 2014-12-30 09:30:47

楼主第一张图里面char a={1}这个是有初始化,你把第一个元素初始化了,编译器会自动把后面的四个元素也进行初始化为'\0'。也就数组a的第一个元素为1其它四个的ascii值为0。你使用strlen()计算出来的结果肯定为1。

第二张图中char a;a=4;数组没有进行初始化,你只是将a进行的赋值。所以数组a中除第一个元素为4外其它几个元素都是未知的。根据每个编译器不同,其初始化的值也可能不同;如果使用vc的编译器每个内存单元的默认初始值就是0xcc。当你使用strlen()时会从a所在的第一个内存单元开始计算,直到找到一个内存单元的值为'\0'。数组a后面的内存单元不知道是什么东西,所以造成楼主的结果是11,3楼的结果是2
页: [1]
查看完整版本: 关于字符数组长度