C语言笔试必备:判断与 sizeof 计算

需积分: 9 5 下载量 105 浏览量 更新于2024-07-25 收藏 300KB PDF 举报
"经典C语言笔试题" 在C语言中,理解和正确使用基本数据类型、条件判断语句以及内存管理是至关重要的。以下是针对标题和描述中提到的一些知识点的详细解释: 1. 数据类型的比较: - BOOL类型的变量通常用于布尔逻辑,`BOOL flag`与零值比较的标准做法是`if(flag)`和`if(!flag)`。避免使用等于或不等于特定数值(如TRUE或FALSE,1或0)的比较,因为这可能导致非标准的、依赖于实现的比较。 - 对于浮点数`float x`,由于浮点数的精度问题,直接用"=="或"!="与0比较是不准确的。正确的做法是设置一个极小的误差范围,例如`const float EPSILON = 0.00001; if((x >= -EPSILON) && (x <= EPSILON))`来判断接近于零的情况。 - 指针变量`char *p`与零值比较应使用`if(p == NULL)`和`if(p != NULL)`,而不是直接用整数值0进行比较。 2. sizeof运算符: - `sizeof`运算符用于计算表达式或类型所占内存的字节数。在32位环境中,通常一个字符(char)占1字节,一个指针占4字节,一个整型(int)也占4字节。 - 在函数`void Func(char str[100])`中,`sizeof(str)`会返回数组作为函数参数时的指针大小,即4字节。 - 对于静态字符串`char str[] = "Hello"`,`sizeof(str)`会返回整个字符串包括结束符'\0'的长度,即6字节。 - 指针`char *p`的`sizeof(p)`始终返回指针的大小,这里是4字节。 - 整型变量`int n`的`sizeof(n)`也是4字节。 - 动态分配内存`void *p = malloc(100)`,`sizeof(p)`依然返回4字节,表示指针的大小,而非动态分配的内存大小。 3. 简答题解答: - `ifndef/define/endif`是预处理器宏,用于防止头文件被多次包含。`ifndef`检查某个宏是否已定义,未定义则执行其后的代码并定义该宏,防止重复执行。 - `#include<filename.h>`是系统头文件的包含方式,编译器从标准库路径开始搜索;`#include"filename.h"`是用户头文件的包含方式,编译器从当前工作目录开始搜索。 - `const`关键字有多种用途: - 定义常量:`const int myConst = 10;`,常量的值在程序运行期间不能改变。 - 修饰函数参数:`void func(const int num)`,确保函数内部不会修改传入的参数值。 - 修饰函数返回值:`const char* getStr() { return "Hello"; }`,防止函数返回的指针被误修改。 - 修饰对象:`const`成员变量在对象创建后不可修改,`const`成员函数不能修改对象的状态。 掌握这些基本概念和技巧是C语言编程的基础,能够帮助你更好地应对笔试和实际编程中的挑战。通过不断练习和理解,可以提升编程技能,避免常见错误,从而在面试和工作中取得成功。