c语言为什么要写头文件,C语言中为什么要头文件和源文件分开写

1,C语言中为什么要头文件和源文件分开写首先当编写单个文件时我们都是只有一个.c文件 , 但是真正做工程的时候,会写很多的模块,我们都知道写程序要高内聚、低耦合,这样做可以优化代码,方便后期维护,你说的头文件和源文件就是这样的,源文件是实现某些功能,而都文件是定义一些通用的数据结构,还有就是源文件里的函数会被其他文件调用,这就要在都文件里声明 , 你会看到extern function()这样的声明,就是为外部提供调用的 , 这就是问什么要头文件和源文件分开写的原因 。望采纳!相同点:头文件与源代码都是源文件,都用纯文本文件存储,都需要遵照c/c++语言规范来写,都可以使用类型定义和常、变量定义,都可以包含函数的声明和实现 , 都能包含宏定义,都使用相同的调用规范 。不同点:c/c++的编译器规定源代码文件必须包含函数入口,即main函数,或者winmain函数 。而头文件不得包含函数入口,也就是说,头文件不可以单独编译成一个程序 , 仅仅包含程序片断或者仅仅定义常、变量 。关联:头文件是专为源代码调用而写的静态包含文件,可被源代码文件中的#include编译预处理指令解释,而将头文件完整拷贝到源代码的指令处,从而在编译时相当于在源代码中插入了函数声明或者实现 。某些头文件包含了静态库中的函数调用声明,包含了lib文件的调用信息,编译时静态链接进程序;而某些头文件是专为方便api调用而写的,里面包含了动态链接库的调用信息和规范 , 只有在运行时将dll载入内存提取函数执行 。也就是说,其实你将头文件里的信息完全写到源代码里,是可以实现完全相同的功能的 。如果你想要学写头文件,可以参照标准c/c++库的h文件 。
2,C语言为什么要包含头文件你需要用到一些标准的库函数 , 用头文件就是把相应库函数所在的文件包含进来,让编译器知道到哪里去找所用到的函数,不同的文件里有不同的函数 。如你会用到printf函数,那么就需要包含,这个文件里面包含了标准输入输出函数 。
3 , 计算机c语言中为什么要用头文件当程序越来越大,公用的代码越来越多,单独用头文件的形式便于管理!同时让程序结构更清晰对于系统提供的头文件,既可以用尖括号形式,也可以用双撇号形式,都能找到被包含的文件,但显然用尖括号形式更直截了当,效率更高 。不同的头文件包括以上不同的信息,提供给程序设计者使用,这样 , 程序设计者不需自己重复书写这些信息,只需用一行#include命令就把这些信息包含到本文件了,大大地提高了编程效率 。由于有了#include命令,就把不同的文件组合在一起 , 形成一个文件 。因此说,头文件是源文件之间的接口 。头文件一般包含以下几类内容: 对类型的声明 。函数声明 。内置(inline)函数的定义 。宏定义 。用#define定义的符号常量和用const声明的常变量 。全局变量定义 。外部变量声明 。如entern int a;还可以根据需要包含其他头文件 。限于篇幅,只能这样粗略不精确地描述给你 , 而且我描述的还不是头文件的全部用途.------------------------这是实现代码细分的一个方式,通过编译器的支持来实现的.我们组织工程的时候,应该尽量保证每个代码文件的粒度适当,过于臃肿\简单都不合适.也就是,每个代码文件应该只包含特定类别的功能.但是为了和别的模块共享本模块的公开接口和类型定义,我们需要一个类似Word目录的功能,便于别的模块来"引用";这样,别的模块在编写的时候,如果需要本模块的功能接口,只需要在该模块中添加一个"引用",在编译链接的时候 , 会将这个引用"指向"实际的模块地址.--------------以上.不是很完整,也写不了那么详细 , 请见谅.这个需要自己编写代码,结合项目来体会 , 慢慢你就会明白了.基本上,软件设计领域任务细分(分而治之)\代码复用\...几个思想到处都能见到.计算机c语言上机考试是没有调试的,有调试的话题目的边上有一个按钮,点一下就可以,\r\n编写程序和进行调试的,我考过计算机二级的考试没有调试,是直接编写的 。【c语言为什么要写头文件,C语言中为什么要头文件和源文件分开写】
4,C为什么要有头文件stdio.h是c的头文件,包含了对你使用的函数的声明 。当你决定使用某个函数的时候,你去查它的帮助信息,都会看到这个函数的声明是包含在哪个头文件的,这样你就可以把它包含进来,从而使用这个函数 。具体请查阅c语言对于include的讲解,还有对于函数,变量的声明部分 。include <stdio.h> 是C的输入输出函数,但在C++中使用可以省略. #include <math.h> 是数学函数,譬如你要用到squar()函数时就必须添加这个头文件. #include <string.h>是字符窜函数. #include <stdlib.h>呵呵,这个有点忘记了,好久没有用了,不好意思啊 反正这几个是常用的,其他还有很多很多,呵呵,自己可以看书后面的几页都有介绍的呢!~ #include<iostream.h>:此头文件申明了所有I/O操作所需的基本服务,即支持流的输入输出操作,譬如程序中有cin ,cout #include<iomanip.h>:此头文件说明可以使用控制数据的输出格式,如设置数制、填充字符、精度、数据宽度等等,譬如使用setw()、setfill() 、setprecision()等 #include <string.h>是字符窜处理函数 #include<afx.h>程序中要使用CString类 #include <stdlib.h>程序中要使用C语言系统提供的库函数gets和puts函数 回答者:雨之泪1988 - 助理 二级 2-6 08:35stdio.h是输入输出头文件,所有有关输入输出的语句如"printf","scanf","putchar","getchar"等,都要用该头文件,头文件其实就是定义了这些函数的文件,它是系统提供给我们的接口 math.h是再进行数学运算时要包含的头文件,它提供了取绝对值,开方,求幂等数学运算 #include<conio.h>与#include<stdio.h> 一样,是头文件包含 。这个头文件包含有许多库函数像#include<stdio.h>包含printf与 scanf一样 , getch()也是其中一个函数,它的功能是无回显得到一 字符,常用这个函数做密码之类的程序 。在TC中编译不需要加头文件 可以,编译器默认包含 。就像在TC是不用加#include<stdio.h>一样 。但在VC中编译就要加了 。否则系统认为你的函数没有定义 。其它头文件你只要再TC文件夹中看看include这个文件夹里面的文件就可以了5,C语言编程时为什么要加头文件头文件是你程序中需要用到东西,如需要某个数学函数,则必须包括数学相关头文件,如math.h,当然,也可以自己写函数,只要你不怕麻烦! 头文件是你程序中需要用到东西 , 如需要某个数学函数,则必须包括数学相关头文件 , 如math.h,当然,也可以自己写函数,只要你不怕麻烦! 头文件就是在你所编制的程序运行时要用到的文件! 如 math.h 和 stdio.h 头文件就是在你所编制的程序运行时要用到的文件! 如 math.h 和 stdio.h 头文件就是在你所编制的程序运行时要用到的文件! 如 math.h 和 stdio.h在C语言家族程序中,头文件被大量使用 。一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成 。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明(declaration) , 而定义文件用于保存程序的实现 (implementation) 。C++/C程序的头文件以“.h”为后缀 。以下是假设名称为 graphics.h的头文件:#ifndef GRAPHICS_H (作用:防止graphics.h被重复引用)#define GRAPHICS_H#include.... (作用:引用标准库的头文件)...#include... (作用:引用非标准库的头文件)...void Function1(...); (作用:全局函数声明)...class Box (作用:类结构声明){...};#endif从以上例子可以看出,头文件一般由三部分内容组成:(1)头文件开头处的版权和版本声明;(2)预处理块;(3)函数和类结构声明等 。在头文件中,用 ifndef/define/endif结构产生预处理块,用 #include 格式来引用库的头文件 。头文件的这种结构 , 是利用C语言进行开发软件所通常具备的,属于公有知识 。一般在一个应用开发体系中,功能的真正逻辑实现是以硬件层为基?。谇绦颉⒐δ懿愠绦蛞约坝没У挠τ贸绦蛑型瓿傻?。根据以上示例,可以发现头文件的主要作用在于调用库功能,对各个被调用函数给出一个描述 , 其本身不包含程序的逻辑实现代码,它只起描述性作用,告诉应用程序通过相应途径寻找相应功能函数的真正逻辑实现代码 。用户程序只需要按照头文件中的接口声明来调用库功能,编译器会从库中提取相应的代码 。因为C语言中的很多常用函数,如输入输出函数都是stdio.h这个文件中定义的,而且你要是还有到其他的函数 , 如puts.gets等就要有这些函数的相应定义,所以要把定义它们的头文件包含进来程序里用到的那些函数需要我们自己调出来 。。加头文件就是这个作用6 , C语言程序中为什么要将头文件mathh包含进来数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有:1 三角函数double sin (double);double cos (double);double tan (double);2 反三角函数double asin (double); 结果介于[-PI/2, PI/2]double acos (double); 结果介于[0, PI]double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2]double atan2 (double, double); 反正切(整圆值), 结果介于[-PI/2, PI/2]3 双曲三角函数double sinh (double);double cosh (double);double tanh (double);4 指数与对数double exp (double);double sqrt (double);double log (double); 以e为底的对数double log10 (double);double pow(double x, double y)//计算以x为底数的y次幂5 取整double ceil (double); 取上整double floor (double); 取下整6 绝对值double fabs (double);double cabs(struct complex znum) //求复数的绝对值7 标准化浮点数double frexp (double f, int *p); 标准化浮点数, f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] )double ldexp (double x, int p); 与frexp相反, 已知x, p求f8 取整与取余double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分double fmod (double, double); 返回两参数相除的余数9其他double hypot(double x, double y);//已知直角三角形两个直角边长度,求斜边长度double ldexp(double x, int exponent);//计算x*(2的exponent次幂)double poly(double x, int degree, double coeffs [] )//计算多项式nt matherr(struct exception *e)//数学错误计算处理程序source: 《C & CCode Capsules》等有些函数是数学函数 , 只能把数学的头文件包含进去……当你需要使用一些特殊的数学符号时,需要将头文件包含进来,不然编译器会报错因为有可能用到math.h文件中的库函数 。。不一定非要头文件 。只有在需要用到数学函数的时候才需要,因为很多的数学函数的程序都在这个头文件里面 。比如你要求平方根,有头文件的话 , 直接用sqrt(X)就可以了 。如果没有头文件的话,里面的数学函数就不能用,那就得自己编写一个求平方根的程序才行 。

    推荐阅读