函数

C语言中的函数

函数的由来:
程序 = 数据结构 + 算法
C程序 = 数据 + 函数
函数用来定义算法

函数的意义

模块化程序设计

面向过程的程序设计

  • 面向过程是一种以过程为中心的编程思想
  • 首先将复杂的问题分解为一个个容易解决的问题
  • 分解过后的问题可以按照步骤一步步完成
  • 函数是面向过程在C语言中的体现
  • 解决问题的每个步骤可以用函数来实现

声明和定义

  • 声明的意义在于告诉编译器程序单元的存在
  • 定义则明确指示程序单元的意义
  • C语言中通过extern进行程序单元的声明
  • 一些程序单元在声明时可以省略extern

严格意义上的声明和定义并不相同

例子1:声明和定义不同
main.c

#include<stdio.h>
#include<malloc.h>

extern int g_var;
extern struct Test;

int main()
{
	struct Test* p = NULL; // (struct Test*)malloc(sizeof(struc Test)); // error
	printf("p = %p\n",p);
	free(p);
	return 0;
}

global.c

int g_var;
struct Test
{
	int x;
	int y;
};

若struct Test* p = (struct Test*)malloc(sizeof(struct Test));会出现编译错误,不能依赖文件的编译顺序,当先编译main.c时,知识告诉编译器存在该结构体,当编译sizeof(struct Test)时,编译器不能从其他文件获取它的类型大小信息

小结

  • 函数是面向过程思想在C语言中的体现
  • 面向过程是由上到下分解问题的设计方法
  • 程序中的定义和声明完全不同
  • C语言中通过extern对程序单元进行声明
posted @ 2018-06-22 14:31  烟云123  阅读(130)  评论(0编辑  收藏  举报