我有一个简单的函数,它可以交换一个字符数组的两个字符。但是,我在Bla.exe中的0x01151cd7处获得“未处理的异常:0xC0000005:访问冲突写入位置0x011557a4。”错误。两个索引(左侧和右侧)都在数组的限制范围内。我做错了什么?
void swap(char* s, int left, int right) {
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
}
swap("ABC", 0, 1);
我正在使用VS2010和非托管C / C ++。谢谢!
答案 0 :(得分:8)
您无法修改字符串文字。而是试试这个:
char s[] = "ABC"
swap(s, 0, 1);
printf("%s\n", s);
答案 1 :(得分:1)
“ABC”在RODATA部分,因此您无法更改它,请参阅汇编:
.section .rodata
.LC0:
.string "ABC"