单选题
1、第98题 (1.0分) 题号:668 以下正确的说法是()。
A
用户若需调用标准库函数,调用前必须重新定义
B
用户可以重新定义标准库函数,若如此,该函数将失去原有含义
C
系统根本不允许用户重新定义标准库函数
D
用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
答案解析
正确答案:B
解析:
**正确答案:B**
**解析:**
本题考查的是 C 语言中标准库函数的使用规则及重定义机制。我们逐一分析各个选项:
* **A 选项错误**:
用户若需调用标准库函数,通常不需要“重新定义”该函数。标准库函数是由编译器厂商预先编译好并提供给用户的。用户只需要在源文件中通过 `#include` 预处理指令包含相应的头文件(如 ``、`` 等),即可直接使用这些函数。重新定义意味着要自己编写函数的实现代码,这违背了使用库函数的初衷。
* **B 选项正确**:
在 C 语言中,语法上允许用户定义一个与标准库函数同名的函数。如果用户这样做了,根据链接规则,用户自定义的函数通常会覆盖库中的同名函数(或者导致链接冲突,取决于具体编译器和链接设置,但在许多环境下是允许重定义的)。一旦重定义,该函数名在程序中指向的就是用户编写的代码逻辑,因此它确实失去了原有标准库函数的含义和功能。**注意:虽然语法允许,但这是一种极不推荐的编程习惯,会导致代码可移植性差且容易引发错误。**
* **C 选项错误**:
系统(编译器/链接器)并非“根本不允许”用户重新定义标准库函数。如上所述,用户可以定义同名函数,但这会掩盖原有的库函数。某些严格的编译器可能会发出警告,但通常不会直接禁止编译(除非涉及保留标识符的严格约束,但在一般教学语境下,重定义是被视为一种可行但危险的操作)。
* **D 选项错误**:
调用标准库函数前,**必须**使用预编译命令(即 `#include`)将对应的头文件包含到用户源文件中。头文件中包含了函数的声明(原型)、宏定义和类型定义等信息。如果不包含头文件,编译器可能无法正确检查参数类型和返回值,导致编译警告或错误,甚至在运行时出现未定义行为。系统不会自动去“调”用而没有声明的函数。
**总结:**
只有 B 选项准确描述了 C 语言中关于函数名重定义的机制及其后果。虽然这种做法在实际开发中应避免,但从语言规则的角度来看,该说法是正确的。
题目纠错
c语言选择判断题库
相关题目
单选题
1、第161题 (1.0分) 题号:113 执行下列语句后变量x和y的值是()。 y=10;x=y++;
单选题
1、第160题 (1.0分) 题号:634 以下不正确的定义语句是()。
单选题
1、第159题 (1.0分) 题号:642 在C语言中,一维数组的定义方式为:类型说明符数组名()。
单选题
1、第158题 (1.0分) 题号:181 C语言中函数调用的方式有()。
单选题
1、第157题 (1.0分) 题号:717 fscanf函数的正确调用形式是()。
单选题
1、第156题 (1.0分) 题号:653 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。
单选题
1、第155题 (1.0分) 题号:604 下面不正确的字符串常量是()。
单选题
1、第154题 (1.0分) 题号:723 函数调用语句:fseek(fp,-20L,2);的含义是()。
单选题
1、第153题 (1.0分) 题号:683 在C语言中,要求运算数必须是整型或字符型的运算符是()。
单选题
1、第152题 (1.0分) 题号:698 整型变量x和y的值相等、且为非0值,则以下选项中,结果为零的 表达式是()。
