memset.解决方案

memset...
今天看见一个帖子写memset的,里面有点东西不是太懂,问问大家~~
C/C++ code


int main()
{
    char *s="This is a test!!";
    memset(s,'G',6);//提示内存访问冲突,改成char s[50]="This is a test!!";通过
    printf("%s",s);
    return 0;
}



为什么改了之后就没问题了?最开始s做为常量了???

------解决方案--------------------
s不是常量,s指向的字符串是常量。
------解决方案--------------------
对于这个问题,微软的编译器将s指定的那块内存标记为const,不允许进行改写。
改为char s[50]="This is a test!!",这就定义了一个非const的字符数组,随便你怎么修改。
------解决方案--------------------
探讨

引用:

s不是常量,s指向的字符串是常量。

指针定义,会把字符串当做常量放入程序存储空间??