首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问个字符串数组的边界有关问题

2012-03-29 
问个字符串数组的边界问题。我申请一个charbuf[32]的字符串数组。但为什么可以对buf[32]a呢?这个数组的最后

问个字符串数组的边界问题。
我申请一个     char   buf[32]   的字符串数组。

但为什么可以对   buf[32]   =   'a '   呢?   这个数组的最后一位不是应该为buf[31]么,我对buf[32]操作不会越界么?

[解决办法]
"我在申请了 char buf[32]的时候,系统是不是会自动在末尾给我添加上一位 '\0 ',而这一位其实就占据了buf[32]的位置 "
不是!
得到“strlen(buf)算出的值是 33”,只是所谓的走XX运而已。
[解决办法]
不太理解您什么意思。不过确实,用strlen(buf)算出的值好像是不太稳定。 有的程序里居然能算出35。好奇怪,这是为什么?
==============================================================================
strlen() 是见到 '\0 ' 结束的,因为没有初始化,所以什么时候碰到 '\0 '未知
sizeof() 是ok的
[解决办法]
strlen是算字符串长度的,是个运行时的函数,而不是像sizeof那样,在编译时计算数组长度:
比如对于:
char s[100000] = " ";
strlen(s)的结果是0。
[解决办法]
遇到内存中的\0结束

热点排行