古代的剑客们与
对手相逢时,无
论对手多么强大,
明知不敌,也要亮出自己的剑!
读者:既然不能修改字符串常量, 为什么不把它们定义为字符常量的数
组?
小林:一个原因是太多的代码包含char *p = "Hello, world!";这样并不正确的语句。这样的语句要受诊断信息的困扰,但真正的问题却出
现在改变 p 所指目的的任何企图。
读者:“const char *p” 和 “char * const p” 有何区别?
小林:“const char *p” 声明了一个指向字符常量的指针, 因此不能改变它所指向的字符; “char * const p” 声明一个指向字符的指针常量, 就是说, 你不能修改指针。
读者:为什么我不能向接受 const char ** 的函数传入 char **?
小林:你可以向接受 const-T 的指针的地方传入T的指针。但是, 这个允许在带修饰的指针类型上轻微不匹配的规则却不能递归应用, 而只能用于最上层。如果你必须赋值或传递除了在最上层还有修饰符不匹配的指针, 你必须明确使用类型转换,不过, 通常需要使用这样的转换意味着还有转换所不能修复的深层次问题。
有时候,正是那些意想不到之人,成就了无人能成之事。
——图灵