函数声明与定义:
(1)声明的意义在于告诉编译器程序单元的存在
(2)定义则明确指示程序单元的意义 (伴随着内存分配)
(3)C语言中通过extern进行程序单元的声明
(4)一些程序单元在声明时可以省略extern (extern int g_var) (extern(可省略) struct Test)
(5)声明和定义并不相同
实例分析:声明和定义不同
extern int g_var;
extern struct Test; //extern可以省略
int main()
{
extern void f(int i, int j);
struct Test* p = NULL; //正确
struct Test* p = (struct Test*)malloc(sizeof(struct Test)); //错误,struct Test定义在其他文件,这里只是声明,C语言编译文件之间不会相互依赖
printf("g_var = %d\n", g_var); //如果定义处的变量和声明出变量类型不一样,那么C语言将会一声明处的类型方式读取定义处的类型写入的数据(float和int类型变量的二进制存储方式不同)
}
小结:
(1)函数是面向过程思想在C语言中的体现
(2)面向过程是由上至下分解问题的设计方法
(3)程序中的定义和声明完全不同
(4)C语言中通过extern对程序单元进行声明