我在 Windows 7.0 x64 上使用 C++ Visual Studio .Net 4.0。这仅发生在 while 语句的第一个循环中。
int main()
{
char *string = new char[11];
string = "characters\0";
toUppercase(string);
return 0;
}
void toUppercase(char *stringPtr)
{
while(*stringPtr != '\0')
{
if(*stringPtr >= 'a' && *stringPtr <= 'z')
{
*stringPtr = *stringPtr - 32; // this is the culprit
}
++stringPtr;
}
}
最佳答案
我怀疑你正在做这样的事情:
toUppercase("test");
问题是"test"
是const char
的数组,不是char
,所以不能修改。然而,由于非常愚蠢的弃用特殊转换,字符串文字无论如何都可以被视为 char*
。
(您的函数也无法测试 toUppercase(0)
。)
关于c++ - 为什么在指针操作中出现访问冲突异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5132579/