数组和指针赋初值问题
char *s; s = "Olympic";
char s[7]; s = "Olympic";
char *s; s = {"Olympic"};
char s[7]; s = {"Olympic"};
能解释下为啥第一个是对的,后面三个都是错的吗?
[解决办法]
- C/C++ code
char *s; s = "Olympic"; // "Olympic"的数据类型是char const [8],可以隐式转换为const char*,继而赋给char*char s[7]; s = "Olympic"; // 已经发生了内存分配,及s的地址已经确定了,而且在栈上,不能更改。可以用strcpy(s, "Olympic");这种方// 式满足你的要求char *s; s = {"Olympic"};// s是一个指针,{"Olympic"}是什么呢?两边的数据类型不一致,且不能相互隐式转换。char s[7]; s = {"Olympic"};// 和上面道理类似