1)在头文件中定义并初始化,那么包含了该头文件的每一个编译单元不仅会为每一个常量指针常量(如const char * const)创建一个独立的拷贝项,而且也会为哪个长长的字符串字面常量创建一个独立的拷贝项,,相当于在每一个编译单元内分别定义和初始化每一个常量时(字符串常量与整型或浮点型常量定义不同,后者在初始化完后不再需要哪个字面常量)。因此每一个编译单元内访问的字符串常量都是它自己单独创建的拷贝。空间的开销就体现在每一个字符串字面常量的独立拷贝上。
2)在源文件中定义并初始化,在头文件中声明所有常量指针变量,而在源文件中定义并初始化他们,则每一个包含该头文件的编译单元访问的不仅是常量指针常量的唯一实体,而且字符串字面常量也是唯一实体。大大节约了内存,而且不影响效率。