C++指针变量有关问题

C++指针变量问题
为什么“”str2="USA"不合法,str[]="China"合法呢?
------解决方案--------------------

#include <iostream>
int main() 
{
    char str[] = "CHINA";        //合法,初始化
    const char *str2 = "USA";    //同样合法
    char *str3 = "France";      //警告,不能从const char *转换到char *
    return 0;
}

------解决方案--------------------
难道你是这么写的?
char str2[10];
然后 str2="USA";

这能合法?

“USA”是字符串常量。
------解决方案--------------------
看你前面的定义是什么;如果是char* str2;str2=“USA”;这个事正确的可以puts(str2)输出;
如果是直接定义char str2=‘USA’这是不合法的;