函数以及变量

一、函数

1、函数的意义

定义函数使功能更加模块化
定义函数的时候以功能为目的,根据功能定函数的参数和返回值

2、函数的分类

2.1 从定义角度分类 (即函数是谁实现的)
	库函数          (C库实现的)
	自定义函数      (程序员自己实现的函数)
	系统调用        (操作系统实现的函数)
2.2 从参数角度分类
	有参函数
	无参函数
2.3 从返回值角度分类
	带返回值的函数
	没返回值的函数

3、函数的定义

函数的定义 即 函数的实现
定义方法:
返回值类型 函数名字( [形参 , 形参] )
{
// 函数体,即函数的功能
}
函数的定义不能嵌套,即不能在一个函数体内定义另外一个函数
所有函数的定义都是平行的

4、函数的声明

4.1 函数的声明: 对已经定义的函数 进行说明

函数的声明可以声明多次

4.2 声明的意义:
	有些情况下,如果不对函数进行声明,编译器在编译的时候,可能不认识这个函数

因为编译器在编译C程序的时候,从上往下编译

4.3 什么时候需要声明 及 声明方法:

(1)主调函数和被调函数在同一个.c文件时

	被调函数在下,主调函数在上

声明方法1 (直接声明)

	将被调函数的第一行拷贝过去,后面加分号
	
	void called_func ( ) ;

声明方法2 (间接声明)

	将被调函数的声明放在头文件中,
	在主调函数的.c中包含头文件即可
	
	#include  "called_func.h"

(2)主调函数和被调函数不在同一个.c文件时
声明方法1(直接声明) 加 extern (外部的意思)

	将被调函数的第一行拷贝过去,后面加分号, 前面加 extern
	
	extern void called_func ( ) ;

声明方法2 (间接声明)

	将被调函数的声明放在头文件中,
	在主调函数的.c中包含头文件即可
	
	#include  "called_func.h"

把 extern void called_func ( ) ;声明搬到called_func.h中,然后包含.h

一般来说,定义一个.c后,需要添加一个对应的.h文件,里面写的是对.c的声明。
需要用.c中的函数,只需要加入对应.h的头文件

5、函数的调用

有返回值的函数调用

	变量=函数名([形参])
	num = max(a,b);

无返回值的函数调用

	函数名([形参])
	show_message();

6、使用函数的好处

定义一次,可以多次调用,减少代码的冗余度
使代码模块化,方便调试,方便阅读

二、变量

1、普通的全局变量

就是 在函数外定义的变量
定义普通全局变量,如果不赋初值,默认为0

作用范围:

	程序的所有地方
	在用之前需要声明(另一个文件中声明方法 extern int num;)
	声明的时候不要赋值

生命周期:

	程序运行的整个过程,一直存在,直到程序结束

2、静态的全局变量

就是 在函数外定义的加 static 修饰的 变量
定义静态局部变量,如果不赋初值,默认为0

作用范围:

	只在定义该变量的.c(源文件)中有效

生命周期:

	程序运行的整个过程,一直存在,直到程序结束

3、普通的局部变量

就是 在 函数里面 或者 复合语句 中定义的变量
**定义普通局部变量,如果不赋初值,默认为 随机 **
作用范围: 在哪里定义的,在哪里有效

	在函数中定义的变量,在该函数中有效
	在复合语句中定义的变量,在复合语句中有效

生命周期:

	在函数调用之前,局部变量不占用空间,
	调用函数的时候,才会给局部变量开辟空间,函数结束了,就释放局部变量的空间
	下一次调用的时候,重新开辟空间

4、静态的局部变量

就是 在 函数里面 或者 复合语句 中定义的加 static 修饰的 变量
定义静态局部部变量,如果不赋初值,默认为 0
作用范围: 在哪里定义的,在哪里有效

	在函数中定义的变量,在该函数中有效
	在复合语句中定义的变量,在复合语句中有效

生命周期:

第一次调用的时候,开辟空间赋值,函数结束后,不释放,
以后再调用的时候,就不再为其开辟空间,也不赋初值

变量重名问题

在同一作用范围内,不允许变量重名
作用范围不同的可以重名
局部范围内,重名的全局变量不起作用(就近原则)

三、特殊的函数

1、外部函数

就是普通的函数,
即函数可以在程序的任何一个文件中调用

2、内部函数

返回值类型前面加了static的函数,
只能被它所在的.c 中的函数调用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值