《C和指针》学习笔记:关键知识点解析

0 下载量 94 浏览量 更新于2024-08-28 收藏 101KB PDF 举报
"这篇学习笔记主要涵盖了《C和指针》一书中的多个关键知识点,包括预处理器指令、特殊的字符序列、静态变量的用法、移位操作、指针操作和函数声明等。\n\n首先,作者提倡使用`#if 0` ... `#endif` 代替`/*` 和 `*/` 来进行条件注释,因为`#if 0` 结构可以嵌套,而多行注释不能。不过,对于单行注释`//`,作者并未给出特别的建议。\n\n在第二章中,介绍了一种特殊的三字母词,即两个问号加一个符号,用来表示其他字符,主要用于避免字符串常量的误解释。例如,`??(` 表示 `[`,`??<` 表示 `{`,`??=` 表示 `#` 等。这些特殊字符的使用可能因编译器而异,理解其含义有助于避免潜在的编码问题。\n\n第三章讨论了`static`关键字的使用。在函数外部,`static`使得变量具有内部链接,限制了其可见性,只在当前源文件中有效。而在函数内部,`static`将自动变量转换为静态变量,使其生命周期贯穿整个程序执行,而不是仅限于函数调用。\n\n第五章提到了位移操作和效率优化。当左移操作数为负值时,行为可能依赖于编译器或者未定义。此外,使用`a+=1`比`a=a+1`更高效,因为前者避免了重复计算。对于`sizeof`操作符,它不计算表达式的值,所以`sizeof(a=b+1)`不会导致赋值操作。\n\n第六章专注于指针,强调未初始化的指针使用是危险的,如`int *a; *a = 12;`可能导致不可预测的行为。作者还提出了返回指针和成功状态值的建议,以增强程序的可读性和安全性,而非简单地使用NULL指针表示未找到。\n\n最后,第七章涉及到函数原型声明。无参数的函数应声明为`int func(void)`,`void`关键字明确表明函数不接受任何参数。\n\n这些笔记是C语言学习者深入理解指针和相关概念的重要参考资料,有助于提升编程技能和代码质量。"