C++中以指针作为函数参数修改实参值得问题,求大神解答下!为什么老是提示修改内存地址值冲突

#include
using namespace std;

void g(char* p)
{
int i=0;
char* a=p;
char* b="dcba";
for(i=0;i<4;i++)
{
*a=*b;
a++;
b++;
}
}

void main()
{
char* x="abcd";
char* p=x;
g(p);
cout<<p<<endl;
system("pause");
}

求大神指教啊!
直接修改指针指向内存的值怎么老是报错?

void g(char* &p)
{
/*int i=0;
char* a=p;*/
char* b="dcba";
/*for(i=0;i<4;i++)
{
a=*b;
a++;
b++;
}
/
p = b;
}
你的指针指向的是常量,常量是不能改变的,只能改变自己的指针

不要修改常量地址空间内容。

char x[] = "abcd";