哪位高手能解释下这段代码为何出错

谁能解释下这段代码为何出错
#include <stdio.h>
#include <string>
void main()
{
char * a = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";  //如果是*a 就出错 如果改成a[] 就没错
char * b = a;
int strLen = strlen(a);
char * c = new char[strLen];
memcpy(c,b,strLen);
printf("原来的:%s\n",a);
for(int i = 0 ; i < strLen ; i ++)
{
b[i] = c[strLen-1-i];
}
printf("后来的:%s\n",a);

getchar();
}
------解决思路----------------------


http://zhidao.baidu.com/link?url=TGDVJVI-IoEekAylSooYPz5G0vhQT0AQYdBDMpx3oWmk5QSrLiN80u3HPH3s-ADuxvyr-jYrByq6UHNAJ9HJP_