C++执行时出现了:“引发了异常: 写入访问权限冲突。”

#include<iostream>
using namespace std;
void LeftShiftOne(char *s, int n)
{
    char t = s[0];
    for (int i = 1;i < n;i++)
    {
        s[i-1] = s[i];
    }
    s[n - 1] = t;
}
void LeftRotateString(char *s, int n, int m)
{
    while (m--)
    {
        LeftShiftOne(s, n);
    }
}
int main()
{
    char *s = "abcdef";
    int m = 3;
    int n = 6;
    LeftRotateString(s, n, m);
    cout << s << endl;
    return 0;
}

执行时出现了异常: 写入访问权限冲突
原因是:char s = "abcdef";有问题。将字符指针s指向了一个字符串常量,所以在子函数中不可以通过s来修改字符串常量
可以通过将字符串常量初始化成一个字符数组来解决 :char s[] = "abcdef";因为s[i]不是常量,所以可以通过*str来修改该字符数组,即修改了该字符串。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容