const char *类型的对象(即指向字符型字面值常量的指针)可以用来初始化字符型数组(char []),但不能初始化字符型指针(char *),下图所示:
const char *初始化字符型指针(报错)
const char *初始化字符型数组(符合)
个人理解和疑惑
先说一下有关初始化的知识点。首先初始化不同于赋值(见c++primer),对于编译器来说这两个是完全不同的概念。赋值是指擦除原变量所在内存的内容,然后把新内容写上。至于初始化,即代表着定义(definition),任何对象不能重复定义,且特殊修饰符(如const、引用符&等)修饰的对象一定要在声明时就初始化。
const char *类型的对象不能用来初始化字符型指针我是理解的,因为初始化的前提(除了引用的初始化)是左右类型完全相同。但是问题来了,字符型数组为什么可以?字符型数组在初始化时,其数据类型实质是怎么样的?希望大伙来解答一下,还有纠错 。