【发布时间】:2016-04-24 15:52:54
【问题描述】:
我的内存访问有问题。当i = 0 时,Visual Studio 将引用以下代码中标记的行引发异常。
无法在0x00AD8B3B 和0x00AD8B3B 访问等于scr+np-i
如何修复 for 循环体以解决此问题?
int o_strrev(char* scr)
{
int np = strlen(scr) - 1;
char tmp;
if (!scr) return -1;
if (!*scr) return -1;
for (int i = 0; i < np / 2; i++)
{
tmp = scr[np-i];
scr[np-i] = scr[i]; # this line
scr[i] = tmp;
}
return 0;
}
【问题讨论】:
-
这个函数怎么调用?你传递什么作为参数?
-
打赌你会向这个函数传递一个常量字符串,比如字符串文字。
-
并且 (!scr) 检查在 stlen(scr) 被调用之前...
-
你不使用标准库有什么原因吗?
标签: c++ arrays for-loop char c-strings