中易网

C语言: 若不包含相应头文件,程序员可以定义与标准库函数同名的用户自定义函数,若如此,该函数将失去

答案:3  悬赏:20  
解决时间 2021-01-16 07:01
  • 提问者网友:抽煙菂渘情少年
  • 2021-01-15 19:26
C语言: 若不包含相应头文件,程序员可以定义与标准库函数同名的用户自定义函数,若如此,该函数将失去
最佳答案
  • 二级知识专家网友:荒野風
  • 2021-01-15 19:54
当自定义尾数与库函数同名时,一般的调用是自定义函数优先,但标准库函数并不失去意义,只是调用方式要有所改变:即用::打头则调用库函数,直接写函数名则调用自定义函数。下面代码可以佐证——
#include "stdio.h"
void printf(void){
puts("12345");
}
int main(int argv,char *argc[]){
::printf("abc
");//用::打头调用库函数printf
printf();//直接调用则默认自定义函数
return 0;
}运行结果如下:

全部回答
  • 1楼网友:街头电车
  • 2021-01-15 21:49

首先题主这句话当然是对的。我来说下包含头文件的情况吧,先上正确结论:
“用户可以重新定义标准库函数,若重新定义,该函数将失去原有含义”。
如:#include
#include
double fabs(double x)    //绝对值函数,这个函数与math.h中的fabs函数同名
{
if (x >= 0.0)
return x;
else
return -x;
}
double sqrt(double a)    //开平方函数,这个函数与math.h中的sqrt函数同名
{
double x1, x2;
x1 = a / 2.0;
x2 = (x1 + a / x1) / 2.0;
while (fabs(x2 - x1)>1e-6)
{
x1 = x2;
x2 = (x1 + a / x1) / 2.0;
}
return x1;
}
int main()
{

double x = 3.0;
printf("%.6lf ", sqrt(x));
return 0;
}
上述代码正常运行。要注意的是:用户可以重新定义标准库函数,若重新定义,该函数将失去原有含义。
但定义必须和math.h中声明保持一致。如:double fabs(double x)    //绝对值函数,这个函数与math.h中的fabs函数同名
{
if (x >= 0.0)
return x;
else
return -x;
}
修改为:
int fabs(double x)    //绝对值函数,这个函数与math.h中的fabs函数同名
{
if (x >= 0.0)
return x;
else
return -x;
}
就会报错了。
  • 2楼网友:封刀令
  • 2021-01-15 20:44
不是失去原有意义,是在你定义的范围内,以你定义的这个同名函数为主
相当于,你定义了一个全局变量,可是,在某个函数内,定义了一个同名的局部变量,在局部变量作用的范围内,以局部变量为主。追问用#include包含的头文件的后缀不可以是“.a”追答除非你自己建立一个.a的文件
理论上,#include可以包含任意类型的文件到程序中来,当然了,最常见的是头文件.h
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息