标签:
代码简化如下:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str="Hello World!";
int len = str.length();//获取长度
for(int i=0;str[i]!=‘ ‘&&(i<len);++i);//遍历字符串中的每一个变量知道找到空格 就是在这一行调试时总是出现错误,原因是数组访问越界
......
}
红色一行的确越界了,原因是每次执行for内的判定条件时,先执行的 str[i]!=‘ ‘ ,这里就一定会发生越界。
要想不越界,可调换顺序 for(int i=0;(i<len)&&str[i]!=‘ ‘;++i)就可以了。
没想到这么小的问题,纠结了半个小时,所以写下来,加深印象,以期养成良好的代码习惯。
一个隐蔽的数组访问越界的问题(竟然纠结半小时,有可能是我水平太低了)
标签:
原文地址:http://blog.csdn.net/jason___bourne/article/details/45115807