c与h的区别
- 格式:doc
- 大小:41.50 KB
- 文档页数:10
【题目】水电离出的c(H+)和c(oH-)的计算。
原则:任何水溶液中水电离产生的c(H+)和c(OH-)总是相等的。
水解呈碱性的盐溶液全部来自水的电离。
答案解析【解析】【答案】OH-【解析】任何水溶液中水电离产生的c(H+)和c(oH-)总是相等的。
水解呈碱性的盐溶液实质是弱酸阴离子结合水电离生成的氢离子而使水的电离平衡正向移动,则OH-全部来自水的电离。
故答案为:OH-。
【盐的水解的实质】H2O⇌H++OH-AB═Bn-+An+当盐AB能电离出弱酸阴离子(Bn-)或弱碱阳离子(An+),即可与水电离出的H+或OH-结合成电解质分子,从而促进水进一步电离.与中和反应的关系:盐的水解为中和反应的逆反应,但一般认为中和反应程度大,大多认为是完全反应,但盐类的水解程度小得多,故为可逆反应,真正发生水解的离子仅占极小比例.【水解规律】简述为:有弱才水解,无弱不水解;越弱越水解,弱弱都水解;越弱越水解,弱弱都水解;谁强显谁性,等强显中性具体:⇌强酸弱碱盐呈酸性;⇌强碱弱酸盐呈碱性;⇌强酸强碱盐呈中性;⇌弱酸弱碱盐不一定例如:NH4CN (碱性)、CH3COONH4(中性)、NH4F(酸性)(主要取决于弱酸弱碱的相对强弱)【水解方程式的书写】(1)盐类水解是可逆反应,反应方程式中要写“⇌”符号;(2)一般盐类水解的程度很小,水解产物很少.通常不生成沉淀或气体,也不发生分解.一般不标“↓”或“↑”,也不把生成物(如H2CO3、NH3•H2O)写成分解产物的形式.(3)多元弱酸根离子的水解要分步写,一般只写第一步.(4)多元弱碱阳离子的水解一步到位.(5)双水解进行到底的,用“=、↑、↓”,均一步到位.(6)多元弱酸的酸式酸根离子水解与电离共存.如:CO32-+H2O⇌HCO3-+OH- NH4++OH-⇌NH3•H2O+H 2O Al3++3H2O⇌Al(OH)3+3H+。
有机化合物的分类一、如何区别脂环化合物和芳香化合物?芳香化合物、芳香烃和苯的同系物有什么关系?1.脂环化合物和芳香化合物的区别碳环化合物分子中含有完全由碳原子组成的碳环,它又可分为两类:脂环族化合物和芳香族化合物。
(1)脂环族化合物不含苯环的碳环化合物都属于这一类。
它们的性质与脂肪族化合物相似,因此叫做脂环族化合物,如。
(2)芳香族化合物具有一些特殊的性质含有一个或多个苯环。
如。
2.芳香族化合物、芳香烃和苯的同系物的关系(1)定义①芳香族化合物:含有苯环的化合物,如、②芳香烃:含有苯环的烃叫芳香烃,如、。
③苯的同系物:分子中含有一个苯环,苯环上的侧链全为烷烃基的芳香烃,如。
(2)芳香族化合物、芳香烃和苯的同系物的关系用图表示二、官能团、根(离子)、基的区别1.基与官能团区别:基是有机物分子里含有的原子或原子团;官能团是决定化合物特殊性质的原子或原子团。
联系:“官能团”属于“基”,但“基”不一定是“官能团”。
熔融状态下“根”与“基”两者可以相互转化,OH-失去1个电子,可转有机化合物的结构特点一、同系物、同分异构体、同位素、同素异形体、同种物质的比较正确书写同分异构体1.同分异构体的书写方法(1)降碳对称法(适用于碳链异构)下面以C7H16为例写出它的同分异构体:①将分子写成直链形式:CH3CH2CH2CH2CH2CH2CH3②从直链上去掉一个—CH3,依次连在剩余碳链中心对称线的一侧的各个碳原子上,得到多种带有甲基的,主链比原主链少一个碳原子的异构体。
根据碳链中心对称,将—CH3连在对称轴的右侧就会与左侧连接方式重复。
另外甲基不能连在链端链上,否则就会与第一种连接方式重复。
③再从主链上去掉一个碳,可形成一个—CH2CH3或两个—CH3来取代有5个碳原子的主链上的氢。
当取代基为—CH2CH3时,由对称关系只能接在中间的碳原子上,即。
当取代基为两个甲基时,在主链上先定一个甲基,按照对、邻、间的位置依次移动另外一个甲基,注意不要重复。
I45c工字钢是什么意思(i45工字钢参数)摘要:今天给各位分享I45c工字钢是什么意思的知识,其中也会对i45工字钢参数进行解释,现在开始吧!什么是H形钢,什么是C形钢,什么是工字钢。
1...今天给各位分享I45c工字钢是什么意思的知识,其中也会对i45工字钢参数进行解释,现在开始吧!什么是H形钢,什么是C形钢,什么是工字钢。
1、H型钢是一种截面面积分配更加优化、强重比更加合理的经济断面高效型材,因其断面与英文字母“H”相同而得名。
由于H型钢的各个部位均以直角排布,因此H型钢在各个方向上都具有抗弯能力强、施工简单、节约成本和结构重量轻等优点,已被广泛应用。
2、C型钢都是由C型钢成型机自动加工成型的。
C型钢成型机根据给定的C型钢尺寸就可以自动完成C型钢的成型工艺。
3、工字钢也称为钢梁(英文名称 Universal Beam),是截面为工字形状的长条钢材。
工字钢分普通工字钢和轻型工字钢。
是截面形状为工字型的型钢。
工字钢是什么?工字钢也称为钢梁(英文名称UniversalBeam),是截面为工字形状的长条钢材。
工字钢分普通工字钢和轻型工字钢。
是截面形状为工字型的型钢。
工字钢主要分为普通工字钢、轻型工字钢和宽翼缘工字钢。
按翼缘与腹板高度比又分为宽幅、中幅、窄幅宽翼缘工字钢。
前二者生产的规格为10—60号,即相应的高度为10cm—60cm。
在相同高度下,轻型工字钢翼缘窄、腹板薄、重量轻。
宽翼缘工字钢又称H型钢,断面特点是两腿平行,且腿内侧没有斜度。
它属于经济断面型钢,是在四辊万能轧机上轧制的,所以又称“万能工字钢”。
普通工字钢、轻型工字钢已经形成国家标准。
扩展资料:工字钢型号以号码数字表示。
号码数字指工字钢高度毫米数的十分之一,如高度相同而腿宽、腰厚不同时,则在号码后附加a、b、c以示区分。
在实际工作中,只写型号不够具体,必要时须附加:_度x腿宽x腰厚的规格表示。
热轧普通工字钢产品由10?63号,轻型工字钢产品由10?70号;通常长度为5?19米。
c语言and和or的用法区别C语言中and和or的用法区别C语言作为一种通用的编程语言,拥有丰富的逻辑运算符。
其中,"and"和"or"是两个常见的逻辑运算符,它们旨在帮助程序员在条件判断时更加灵活地处理不同情况。
本文将详细解释C语言中and和or的用法区别,并通过示例代码进行说明。
一、逻辑与运算符(and)1. 作用与概述逻辑与运算符(&&)用于判断多个条件是否同时满足。
当所有条件都为真时,整个表达式返回真;只要任意一个条件为假,则整个表达式返回假。
2. 示例以下是一个简单示例代码,展示了逻辑与运算符的用法:```c#include <stdio.h>int main() {int a = 5;int b = 10;if (a > 0 && b > 0) {printf("a和b均大于0\n");} else {printf("至少有一个小于等于0\n");}return 0;}```上述代码中使用了逻辑与运算符"&&"来判断变量a和b是否大于0。
如果两者皆大于0,则输出"a和b均大于0";否则输出"至少有一个小于等于0"。
这样,在多个条件判断时,我们可以使用逻辑与运算符将它们连接在一起。
二、逻辑或运算符(or)1. 作用与概述逻辑或运算符(||)用于判断多个条件是否至少有一个为真。
当至少有一个条件为真时,整个表达式返回真;只有所有条件都为假时,整个表达式返回假。
2. 示例以下是一个简单示例代码,展示了逻辑或运算符的用法:```c#include <stdio.h>int main() {int a = 5;int b = -10;if (a > 0 || b > 0) {printf("a和b中至少有一个大于0\n");} else {printf("a和b均小于等于0\n");}return 0;}```上述代码中使用了逻辑或运算符"||"来判断变量a和b是否至少有一个大于0。
文件包含与头文件的写法很多人对C语言中的“文件包含”都不陌生了,文件包含处理在程序开发中会给我们的模块化程序设计带来很大的好处,通过文件包含的方法把程序中的各个功能模块联系起来是模块化程序设计中的一种非常有利的手段。
文件包含处理是指在一个源文件中,通过文件包含命令将另一个源文件的内容全部包含在此文件中。
在源文件编译时,连同被包含进来的文件一同编译,生成目标目标文件。
很多人再初学时都会对这个很晕,怎么写文件件? 怎么包含才能避免重定义? 等等问题。
其实这个只要了解了文件包含的基本处理方法就可以对文件包含有一个很好的理解与应用了,下来我们一起来看一下:文件包含的处理方法:首先大家需要清楚:(1) 处理时间:文件包含也是以"#"开头来写的(#include ), 那么它就是写给预处理器来看了, 也就是说文件包含是会在编译预处理阶段进行处理的。
(2) 处理方法:在预处理阶段,系统自动对#include命令进行处理,具体做法是:降包含文件的内容复制到包含语句(#include )处,得到新的文件,然后再对这个新的文件进行编译。
抓住这两点,那么这个东东就没有什么难的了。
一般情况下文件包含分为两种:包含.h文件和包含.c文件1. 当然对于这两情况也都是按照上面说的方法来处理的。
呵呵,这个肯定是没得说的.2. 包含.c文件和编译多文件程序是不同的。
多文件程序: 是在源文件编译时把多个文件进行编译、连接在一起生成一个可执行文件。
包含.c文件:按照我们上边的说法则是把多个文件合并为一个文件进行编译。
接下来通过例子看一下:(1)包含.c文件:1://file1: main.c2: #include3: #include "fun.c"4:int main()5: {6:int a=5,b=19;7: c = a;8:sun(a,b);9:printf("c=%d\n",c);10:return 0;11: }12: //end of file11://file2: fun.c2:int c=0;3:void sun(int a, int b)4: {5: printf("a+b=%d\n",a+b);6: c=0;7: printf("c=%d\n",c);8: }9://end of file210:这个例子是采用包含.c文件的方法实现的。
char、varchar、varchar2区别char varchar varchar2 的区别?1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的,比如,存储字符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。
?2.CHAR的效率比VARCHAR2的效率稍高。
?3.目前VARCHAR是VARCHAR2的同义词。
工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。
Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。
如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。
何时该用CHAR,何时该用varchar2??CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.?VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。
?VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I-O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。
char varchar nchar nvarchar 四者的区别1、char[(n)]长度为 n 个字节的固定长度且非 Unicode 的字符数据。
n 必须是一个介于 1 和 8,000 之间的数值。
存储大小为 n 个字节。
char 在 SQL-92 中的同义词为 character。
说起型钢,它包含的有好多,像我们比较常见的就有H型钢、工字钢、槽钢、C型钢、角钢、T型钢、扁钢等等。
而这些型钢因为有些在外观上有些许类似,所以经常被人混淆,像是H型钢和工字钢,经常会有人问,这两种型钢是一种吗?同样会被这样问到的还有C 型钢和槽钢,所以今天我们就来聊一聊两者的区别。
首先我们来看C型钢,虽然跟槽钢一样,中间是凹下去的,但是C型钢跟槽钢最本质的区别就是,它是利用C型钢成型机,一体成型加工制作完成的,而且仔细看的话两者在外观上也有很大区别,不仅如此,C型钢主要还是运用在钢结构的房屋建筑中,用作屋架或者边框这些地方。
反观槽钢,它很明显是切割焊接形成的型钢,形状跟凹槽一样,所以才被命名为槽钢,并不是像C型钢那样一体成型的,而且对比C型钢,他的适用范围要广一些,除了建筑的框架,边框之外,它还可用于大型工程、大型机械设备,另外,我们现在日常的代步工具——汽车,它也是有参与的,所以总的来说,它的运用度比C型钢高一些。
ph和c(h+)的关系
ph与c(H+)的关系:
ph是c(H+)的负对数,即:ph等于负lgc(H+)。
c(H+)是氢离子浓度,ph就是氢离子浓度的10的对数的负值。
氢离子是氢原子失去一个电子形成的阳离子,带一个单位正电荷。
某些情况下,也能形成带一个单位负电荷的阴离子,称为氢负离子(H-)。
ph也称为氢离子浓度指数,是指溶液中氢离子的总数和总物质的量的比,是表示氢离子浓度的一种方法。
它是水溶液中氢离子浓度的常用对数的负值。
ph的测定方法可通过使用ph指示剂、ph试纸测定,而定量的ph测量需要采用ph计来进行测定。
这三种方法具体如下:
1、使用ph指示剂。
在待测溶液中加入ph指示剂,不同的指示剂根据不同的ph会变化颜色,根据指示剂的研究就可以确定ph的范围。
滴定时,可以作精确的ph标准。
2、使用ph试纸。
ph试纸有广泛试纸和精密试纸,用玻璃棒蘸一点待测溶液到试纸上,然后根据试纸的颜色变化对照标准比色卡可以得到溶液的ph。
3、使用ph计。
ph计是一种测定溶液ph的仪器,它通过ph选择电极来测定出溶液的ph。
ph计可以精确到小数点后两位。
一个简单的问题:.c和.h文件的区别学了几个月的C语言,反而觉得越来越不懂了。
同样是子程序,可以定义在.c 文件中,也可以定义在.h文件中,那这两个文件到底在用法上有什么区别呢?2楼:子程序不要定义在.h中。
函数定义要放在.c中,而.h只做声明.否则多引用几次,就会发生函数重复定义的错误。
3楼:.h只做声明,编译后不产生代码4楼:这样做目的是为了实现软件的模块化使软件结构清晰,而且也便于别人使用你写的程序纯粹用 C 语言语法的角度,你当然可以在 .h 中放任何东西,因为 #include 完全等价于把 .h 文件 Ctrl-C Ctrl-V 到 .c 中.h 中应该都是一些宏定义和变量、函数声明,告诉别人你的程序“能干什么、该怎么用”.c 中是所有变量和函数的定义,告诉计算机你的程序“该怎么实现”5楼:当然,如果一个 .h 被多个 .c 包含而且 .h 中有对象(变量或函数)的定义,就会发生重复定义的错误了声明可以无穷多次,定义只能一次6楼:一般来说,一个C文件应该是一个模块如果你的程序仅仅有一个模块(仅仅一个C文件),就可以不用建立H文件了。
否则你的模块肯定不是独立的,你的模块里面的实现要被别的模块调用。
这个时候你最好生成一个头文件(H文件),在头文件里面可以声明你的那些函数是公共的。
当别的模块包含你的头文件后,就可以使用你的公共声明了。
7楼:一个C对应一个H,这样管理起来方便比如你有一个"feed_dog.c",那么就再添加一个"feed_dog.h":#ifndef _feed_dog_h#define _feed_dog_hextern void feed_dog(void);#endif其实在H文件里写函数也无所谓,只是不符合习惯而已。
只要按照以上的格式写,一个H文件添加多少次都无所谓,呵呵8楼:只是一种约定在编译器里面,.c和.h是没有区别的,.c和.h如何使用完全取决于程序员,不过为了你的程序以后还能看懂而且别人也能看懂,请遵守普遍的约定,这些约定前面的大虾们已经讲了很多了.这个就象汽车在马路上要靠右行使一样,是人为约定,汽车(编译器)本身并不知道自己是在靠左还是靠右行使.如果你喜欢,还可以用任意后缀命名源文件和头文件,但这样干可能会导致集成编译和调试环境罢工,你只好自己写makefile文件了.9楼:非常感谢各位大侠,不过我现在越来越糊涂了1,当一个函数要经常使用(比如有十几个C文件使用它)时,一般我都放在H文件里,并在前面加上__inline.对于__inline函数,很多C文件都可以INCLUDE 这个H文件,但是它好象只能被一个H文件INCLUDE,如果有两个H文件INCLUDE 它,就会出现编译错误。
2,有些数组变量,其大小可能达十几K,而且要赋初值,这就不放在C文件里了,要不人都蒙了。
3,#ifndef _feed_dog_h#define _feed_dog_hextern void feed_dog(void);#endifmohanwei兄,是不是这样定议了,这个feed_dog.h就可以无数次的被INCLUDE 了?11楼:#ifndef _feed_dog_h //如果到目前为止还没有定义过“_feed_dog_h”这个宏#define _feed_dog_h //则定义“_feed_dog_h”这个宏extern void feed_dog(void); //声明一个外部函数#endif //“#ifndef”到此结束所以,不管你定义多少次(哪怕你在同一个C文件里定义多次),都不会发生冲突的。
在网上看到一篇关于.H和.C的文章,感觉不错,帖出与大家共享.简单的说其实要理解C文件与头文件有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段2.词法与语法分析阶段3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息.编译器在编译时是以C文件为单位进行的,也就是说如果你的项目中一个C文件都没有,那么你的项目将无法编译,连接器是以目标文件为单位,它将一个或多个目标文件进行函数与变量的重定位,生成最终的可执行文件,在PC上的程序开发,一般都有一个main函数,这是各个编译器的约定,当然,你如果自己写连接器脚本的话,可以不用main函数作为程序入口!!!!有了这些基础知识,再言归正传,为了生成一个最终的可执行文件,就需要一些目标文件,也就是需要C文件,而这些C文件中又需要一个main函数作为可执行程序的入口,那么我们就从一个C文件入手,假定这个C文件内容如下:#include <stdio.h>#include "mytest.h"int main(int argc,char **argv){test = 25;printf("test.................%d\n",test);}头文件内容如下:int test;现在以这个例子来讲解编译器的工作:1.预处理阶段:编译器以C文件作为一个单元,首先读这个C文件,发现第一句与第二句是包含一个头文件,就会在所有搜索路径中寻找这两个文件,找到之后,就会将相应头文件中再去处理宏,变量,函数声明,嵌套的头文件包含等,检测依赖关系,进行宏替换,看是否有重复定义与声明的情况发生,最后将那些文件中所有的东东全部扫描进这个当前的C文件中,形成一个中间“C文件”2.编译阶段,在上一步中相当于将那个头文件中的test变量扫描进了一个中间C文件,那么test变量就变成了这个文件中的一个全局变量,此时就将所有这个中间C文件的所有变量,函数分配空间,将各个函数编译成二进制码,按照特定目标文件格式生成目标文件,在这种格式的目标文件中进行各个全局变量,函数的符号描述,将这些二进制码按照一定的标准组织成一个目标文件3.连接阶段,将上一步成生的各个目标文件,根据一些参数,连接生成最终的可执行文件,主要的工作就是重定位各个目标文件的函数,变量等,相当于将个目标文件中的二进制码按一定的规范合到一个文件中再回到C文件与头文件各写什么内容的话题上:理论上来说C文件与头文件里的内容,只要是C语言所支持的,无论写什么都可以的,比如你在头文件中写函数体,只要在任何一个C文件包含此头文件就可以将这个函数编译成目标文件的一部分(编译是以C文件为单位的,如果不在任何C文件中包含此头文件的话,这段代码就形同虚设),你可以在C文件中进行函数声明,变量声明,结构体声明,这也不成问题!!!那为何一定要分成头文件与C文件呢?又为何一般都在头件中进行函数,变量声明,宏声明,结构体声明呢?而在C文件中去进行变量定义,函数实现呢??原因如下:1.如果在头文件中实现一个函数体,那么如果在多个C文件中引用它,而且又同时编译多个C文件,将其生成的目标文件连接成一个可执行文件,在每个引用此头文件的C文件所生成的目标文件中,都有一份这个函数的代码,如果这段函数又没有定义成局部函数,那么在连接时,就会发现多个相同的函数,就会报错2.如果在头文件中定义全局变量,并且将此全局变量赋初值,那么在多个引用此头文件的C文件中同样存在相同变量名的拷贝,关键是此变量被赋了初值,所以编译器就会将此变量放入DATA段,最终在连接阶段,会在DATA 段中存在多个相同的变量,它无法将这些变量统一成一个变量,也就是仅为此变量分配一个空间,而不是多份空间,假定这个变量在头文件没有赋初值,编译器就会将之放入BSS段,连接器会对BSS段的多个同名变量仅分配一个存储空间3.如果在C文件中声明宏,结构体,函数等,那么我要在另一个C文件中引用相应的宏,结构体,就必须再做一次重复的工作,如果我改了一个C文件中的一个声明,那么又忘了改其它C文件中的声明,这不就出了大问题了,程序的逻辑就变成了你不可想象的了,如果把这些公共的东东放在一个头文件中,想用它的C文件就只需要引用一个就OK了!!!这样岂不方便,要改某个声明的时候,只需要动一下头文件就行了4.在头文件中声明结构体,函数等,当你需要将你的代码封装成一个库,让别人来用你的代码,你又不想公布源码,那么人家如何利用你的库呢?也就是如何利用你的库中的各个函数呢??一种方法是公布源码,别人想怎么用就怎么用,另一种是提供头文件,别人从头文件中看你的函数原型,这样人家才知道如何调用你写的函数,就如同你调用printf函数一样,里面的参数是怎样的??你是怎么知道的??还不是看人家的头文件中的相关声明啊!!!当然这些东东都成了C标准,就算不看人家的头文件,你一样可以知道怎么使用程序源码中".h"文件与".c"文件有什么区别呀??在一个程序源码中,看到了udp.h文件又看到了udp.c文件,不知道这两者是什么关系呀?又有何区别呢?哪位高手前来帮忙,谢谢谢谢.一级最佳答案.c就是C语言系列的源文件,以文本形式存在,而.h系列则是头文件,即C系列中存放函数和全局变量的文件,因为C中的函数是被封装起来的,即无法看到其代码.头文件与之实现文件的的关系今天在网上看到一篇解释.h与.c(.cpp)的文章,我读完后感到有些地方不妥,特此按照我的理解,给初学者一些指导~你理解简单的含义吗?关于两者以前的关系,要从N年以前说起了~ long long ago,once aupon a time .......那是一个被遗忘的年代,在编译器只认识.c(.cpp))文件,而不知道.h是何物的年代。
那时的人们写了很多的.c(.cpp)文件,渐渐地,人们发现在很多.c(.cpp)文件中的声明语句就是相同的,但他们却不得不一个字一个字地重复地将这些内容敲入每个.c(.cpp)文件。
但更为恐怖的是,当其中一个声明有变更时,就需要检查所有的.c(.cpp)文件,并修改其中的声明,啊~简直是世界末日降临!终于,有人(或许是一些人)再不能忍受这样的折磨,他(们)将重复的部分提取出来,放在一个新文件里,然后在需要的.c(.cpp)文件中敲入#include XXXX 这样的语句。
这样即使某个声明发生了变更,也再不需要到处寻找与修改了---世界还是那么美好!因为这个新文件,经常被放在.c(.cpp)文件的头部,所以就给它起名叫做“头文件”,扩展名是.h.从此,编译器(其实是预处理器)就知道世上除了.c(.cpp)文件,还有个.h的文件,以及一个叫做#include命令。