今天说一下这个C语言 | 每日基础(57)

古代的剑客们与

对手相逢时,无

论对手多么强大,

明知不敌,也要亮出自己的剑!

读者:“const char *p” 和 “char * const p” 有何区别?

阿一:“const char *p” (也可以写成 “char const *p”) 声明了一个指向字符常量的指 针, 因此不能改变它所指向的字符; “char * const p” 声明一个指向 (可变) 字符的 指针常量, 就是说, 你不能修改指针。“从里到外” 看就可以理解它们。

读者:为什么我不能向接受 const char ** 的函数传入 char **?

阿一:你可以向接受 const-T 的指针的地方传入 T 的指针 (任何类型 T 都适用)。但是, 这个允许在带修饰的指针类型上轻微不匹配的规则 (明显的例外) 却不能递归 应用, 而只能用于最上层。如果你必须赋值或传递除了在最上层还有修饰符不匹配的指针, 你必须明确 使用类型转换 (本例中, 使用 (const char **)), 不过, 通常需要使用这样的转换意 味着还有转换所不能修复的深层次问题。

读者:怎样正确声明 main()?

阿一:int main(), int main(void) 或者 int main(int argc, char *argv[])。

有时候,正是那些意想不到之人,成就了无人能成之事。

——图灵

小编二维码

长按/加好友

– END –

正文完