防止C语言动态数组越界解决思路
防止C语言动态数组越界
char* buf = new char[200];
char* cp = buf;
...
if(cp==buf[200]) return true;
//编译错误error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
囧,求解
------解决方案--------------------
------解决方案--------------------
cp的类型是char*
buf[200]的类型是char
怎么比较?
------解决方案--------------------
错了 你是要比较地址么?
------解决方案--------------------
如果你的cp是像 for循环那样,每次+1的,可以这么判断
if (cp != buf + 200) // 没越界
char* buf = new char[200];
char* cp = buf;
...
if(cp==buf[200]) return true;
//编译错误error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
囧,求解
C++
------解决方案--------------------
if (cp == buf[199])
//数组下标是从0开始的!
------解决方案--------------------
cp的类型是char*
buf[200]的类型是char
怎么比较?
------解决方案--------------------
错了 你是要比较地址么?
if (cp == &buf[199])
------解决方案--------------------
如果你的cp是像 for循环那样,每次+1的,可以这么判断
if (cp != buf + 200) // 没越界