C语言之初始函数

1. 为什么要用函数

1.1   如果程序的功能比较多,规模比较大,所有的代码都写在一个主函数里面,不会使得主函数变得很庞杂,看着很乱,使阅读者阅读程序会感觉到困难。因此,人们会想到,利用函数去简化程序设计的过程。我们可以事先编好一批常用的函数来实现不同的功能,调用时直接在程序中调用系统函数的函数代码,并执行就可以得到预期结果。

1.2    所在函数库
①. 字符库函数:【ctype.h】
②. 数学函数:【math.h、stdio.h、string.h、float.h】
③. 目录函数:【dir.h、dos.h】
④. 进程函数:【stdlib.h、process.h】
⑤. 诊断函数:【assert.h、math.h】
⑥. 操作函数:【string.h、mem.h】

1.3   函数就是功能,每一个函数用来实现一个特定的功能函数的名字反应,其代表的功能。

2. C语言函数的作用域

C语言之初始函数_第1张图片

C语言之初始函数_第2张图片 

 注:.text为代码区, .data是数据区,  .heap是堆区,.stack是栈区。

2.1 定义:生存期也叫生命期。指的是标识符从程序开始运行时被创建,具有存储空间,到程序运行结束时消亡,释放空间的时间段。
注:此阶段针对的是程序的执行过程。

2.2 局部变量的生存期:函数被调用,分配存储空间,到函数执行结束,存储空间释放。局部变量存储在栈区.stack。

2.3 全局变量的生存期:从程序行前开始,到执行后结束。全局变量存储在数据区.data。

2.4 动态生存期: 标识符由特定的函数调用或运算来创建和释放,比如调用malloc() 为变量分配存储空间,变量的生存期开始,而调用free() 释放空间或程序结束时,变量生存期结束。具有动态生存期的变量存储在堆区.heap。

3. 定义函数的方法
 

类型名 函数名(形式参数列表)

{

    函数体  

}

函数体包括声明部分和语句部分。

4. 函数调用的形式

函数名(实参列表)

注:在调用有参函数时,主调函数和被调函数之间有数据传递的关系,在定义函数时,函数名后面括号中的变量名称为“形式参数”,在主调函数中调用一个函数时,函数名后面括号中的参数称为“实际参数”。

函数可以没有返回值(void),最多返回一个该如何处理?
  1.将main函数名改成合适的名称。
  2.不通过scanf获取数据,通过参数列表传递数据。
  3.返回值,将函数体执行的结果返回。  当需要通过printf输出时应该考虑返回值.在功能函数中不要输出数据。
  注意:通过返回值返回和通过printf输出的区别。

5. 程序实例
 

求1+2+3+4+5+....+n

#define  _CRT_SECURE_NO_WARNINGS
#include
#include
int getsum(int n) {  //形式参数列表
	int res = 0;
	for (int i = 1; i <= n; i++) {
		res += i;
	}
	return res;
}

int main() {  //使用printf  scanf
	//主程序-main函数 --> 测试功能(printf,scanf)
	int res = getsum(10);  //实际参数列表
	printf("%d\n",res);
	
	return 0; // 0 代表main 成功退出
}

运行结果:

 总结:
      使用c语言中的函数可以将一段代码进行封装,在需要使用的时候直接调用即可;使程序更加清晰,方便阅读,易于维护,可提高代码的重用性。


 


 

你可能感兴趣的:(C语言,c语言)