C语言中 .c和.h有什么区别

多文件的编辑。。比如:先建立一个main.c文件:#include<stdio.h>#include"fun.h"intmain(intargc,char*argv[])... 多文件的编辑。。比如:先建立一个main.c文件:
#include <stdio.h>
#include "fun.h"

int main(int argc, char *argv[])
{
printf("%d\n",fun(9,2));
system("PAUSE");
return 0;
}
再建一个fun.h:
int fun(int a, int b);
再建一个fun.c:
#include "fun.h"

int fun(int a,int b )
{
return a+b;
}
为什么必须先建一个fun.h再建一个fun.c而不直接把这两个写在一起当做fun.h呢?
那位大虾有空,解释一下下。。谢谢了
展开
 我来答
大野瘦子
高粉答主

2019-09-03 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:34.5万
展开全部

一、意思不同

.h中一般放的是同名.c文件中定义的变量、数组、函数的声明,需要让.c外部使用的声明。

.c文件一般放的是变量、数组、函数的具体定义。

二、用法不同

.c文件,以c为扩展名,一般存储具体功能的实现。

.h文件,称为头文件,一般存储类型的定义,函数的声明等。通常,头文件被.c文件包含,使用#include 语句。但值得注意的是,这只是一种约定,而非强制。

三、作用

如果在h文件中实现一个函数体,那么如果在多个C文件中引用它,而且又同时编译多个C文件,将其生成的目标文件连接成一个可执行文件,在每个引用此h 文件的C文件所生成的目标文件中,都有一份这个函数的代码,如果这段函数又没有定义成局部函数,那么在连接时,就会发现多个相同的函数,就会报错。

如果在h文件中定义全局变量,并且将此全局变量赋初值,那么在多个引用此h文件的C文件中同样存在相同变量名的拷贝,关键是此变量被赋了初值,所以编 译器就会将此变量放入DATA段,最终在连接阶段,会在DATA段中存在多个相同的变量,它无法将这些变量统一成一个变量,也就是仅为此变量分配一个空 间,而不是多份空间,假定这个变量在h文件没有赋初值,编译器就会将之放入BSS段,连接器会对BSS段的多个同名变量仅分配一个存储空间。

风若远去何人留
2017-05-09 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450132
专业C/C++软件开发

向TA提问 私信TA
展开全部

C语言的源文件分为两种:

1、.c文件,以c为扩展名,一般存储具体功能的实现;

2、.h文件,称为头文件,一般存储类型的定义,函数的声明等。

通常,头文件被.c文件包含,使用#include 语句。

但值得注意的是,这只是一种约定,而非强制。

事实上,将声明写在.c文件,比如a.c,然后

#include "a.c"

同样是合法的。 

而把.h文件,内部写入函数实现,再在.c文件中引用,也是编译器允许的。

所以,.c与.h的区分,本质上是一种约定。一名合格的软件开发人员,也要遵循这个约定,增加代码的可读性和维护性。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanfustudio
2009-04-27 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3764万
展开全部
头文件用於定义类型
c文件主要用於写实现.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式