C Primer Plus 读书笔记:关键概念解析

需积分: 17 4 下载量 155 浏览量 更新于2024-07-27 1 收藏 1.49MB DOC 举报
"C Primer Plus 读书笔记" 这篇读书笔记主要涵盖了C语言编程中的关键概念,包括输入输出、字符串处理、常量定义以及系统限制等方面的要点。以下是对这些知识点的详细解释: 1. `scanf()` 和 `gets()` 的区别: 当使用`scanf()`函数读取包含空格的字符串时,它会在遇到第一个空白字符时停止读取,因此`%s`格式说明符通常只用于读取单个单词。如果想要读取整个语句或包含空格的字符串,应该使用`gets()`函数。然而,需要注意的是`gets()`存在缓冲区溢出的风险,所以在C11标准之后,推荐使用更安全的`fgets()`替代。 2. 字符串常量与字符常量的区别: 字符常量(如'x')是基本类型`char`,而字符串常量(如"x")是字符数组,其结尾自动添加一个空字符`'\0'`。因此,"x"实际上是包含两个字符的数组:'x'和'\0'。 3. `strlen()`和`sizeof()`的差异: `strlen()`函数返回字符串的长度,不包括终止符`'\0'`。而`sizeof()`运算符返回数据对象的字节数,包括字符串中的`'\0'`。 4. 符号常量的定义及其意义: 定义符号常量(通过`#define`或`const`关键字)可以提高代码的可读性和可维护性。使用大写字母表示符号常量是一种约定,以便区分它们与变量。`#define`创建的常量是预处理器宏,而`const`修饰的常量是运行时的只读变量,它们在内存中都有各自的存储位置。 5. 限制头文件的作用: `<limits.h>`提供了整数类型的最小值和最大值,例如`INT_MAX`和`INT_MIN`。而`<float.h>`提供了浮点数的相关限制,如`FLT_MAX`和`FLT_MIN`,分别表示浮点数的最大正常值和最小正常值。在上述示例中,程序打印出了在当前系统上整数和浮点数的最大值和最小值。 通过这些笔记,读者可以深入理解C语言中的基本概念,为编写更安全、更有效的代码打下坚实基础。同时,这些知识也适用于其他C语言相关的学习和实践。