【c语言——函数】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

c语言——函数


1.函数使用的目的:封装代码,减少重复。
函数就是功能,每一个函数用来实现一定的功能,在定义函数的过程中最好见词起义。

2.函数的分类:
主函数(main):所有工程有且仅有一个main函数,main函数是所有代码执行的入口函数。

子函数:
自定义子函数:自己写的实现功能的函数
库函数:C语言标准库函数,第三方库函数。

指针函数
返回值类型 *函数名 (形参),例如:int *fun(int a,int b)

函数指针
类型 (*指针名) (形参) ,例如:int (*p) (int)

函数指针数组
类型 (*数组名【下标】) (形参),例如:int (*funcp[2]) (int,int)

指向指针函数的函数指针数组 ,例如:int *(*funcp[n]) (int)

函数的定义与声明的区别

C语言编译系统是由上往下编译的.一般被调函数放在主调函数后面的话,前面就该有声明.不然C由上往下的编译系统将无法识别。正如变量必须先声明后使用一样,函数也必须在被调用之前先声明,否则无法调用!函数的声明可以与定义分离,要注意的是一个函数只能被定义一次,但可以声明多次。

函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。这三个元素被称为函数原型,函数原型描述了函数的接口。定义函数的程序员提供函数原型,使用函数的程序员就只需要对函数原型编辑即可。
【返回类型】 函数名(参数1类型 参数1,参数2类型 参数2,……);
函数声明中的形参名往往被忽略,如果声明中提供了形参的名字,也只是用作辅助文档。另外要注意函数声明是一个语句,后面不可漏分号!

声明与定义的区别:
函数的声明与函数的定义形式上十分相似,但是二者有着本质上的不同。声明是不开辟内存的,仅仅告诉编译器,要声明的部分存在,要预留一点空间。定义则需要开辟内存。
函数的定义
函数的定义是一个完整的函数单元:
包含函数类型、函数名、形参及形参类型、函数体等
在程序中,函数的定义只能有一次
函数首部与花括号间不加分号

函数的声明
函数声明只是对编译系统的一个说明:
函数声明是对定义的函数的返回值的类型说明,以通知系统在本函数中所调用的函数是什么类型。
不包含函数体(或形参)
调用几次该函数就应在各个主调函数中做相应声明
函数声明是一个说明语句,必须以分号结束

1》函数的定义:
格式:
返回值类型 函数名(参数列表)
{
函数体;
return 返回值;
}
返回值类型:函数执行完,带回去的值,要和return后面的返回值一致。

函数名:给函数起一个名字(遵循标识符命名规则),遵循驼峰式
参数列表:使用该函数时,给函数传递的值。
函数体:实现功能的过程。

2》函数的声明
格式:返回值类型 函数名(参数列表);//要加分号
位置:谁调用该函数,就放到谁上边!
3》函数的调用:
格式:函数名(参数列表)

4.形参和实参:
形参:
函数定义时的参数,叫做形式参数 – 形参
1》形参列表中的数据类型和变量名一一对应,不可以省略
例如:int a,b,c不可以的,int a,int b,int c
2》形参可有可无–没有的话写void
3》在形参列表中定义的变量,在函数体中就无需在定义了,直接使用,即可(换句话说:在形参种定义的变量 等同于在函数体中定义的变量)
4》形参也是一种局部变量–只能在函数体内部使用

实参:

函数调用时候的参数:叫做实参 – 实参
实参可以是:变量,常量,表达式,也可以是地址,或者数组名,如果数数组名,传递的就是数组的首元素地址!

形参和实参的使用注意事项:
1、 实参、形参 个数、位置要匹配
2、 若形参与实参类型不一致,自动按形参类型转换——函数调用转换(一般不要让类型不一致)
3、 形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放
4、 实参对形参的数据传送是值传递,也是单向传送,当被调函数的形参发生变化时,并不改变主调函数实参的值。形、实参占据的是不同的存储单元

5.函数的值传递和地址传递
值传递:
被调函数的值改变,不会引起调用函数的值

地址传递:

①数组传参,就是地址传递的一种
②传递变量的地址,通过指针,改变指针指向空间的内容

6.函数的递归操作:
函数自身调用自身的操作,叫做函数的递归操作。
递归一般有两个操作:
①存在递归的结束条件
②存在递归起始值(不一定有,根据题目而定)

7.C语言5大区域
堆区:由程序员自主申请的区域,malloc()动态申请空间,free()释放空间

栈区:临时变量,局部变量,形参

静态全局区:全局变量,静态变量

文字常量区:常量, const 修饰的变量

二进制代码段:存放函数

关键字
static
修饰局部变量,延长生命周期
修饰全局变量,函数,私有化操作,只能在本文件内部使用

const
修饰的量不能被改变,修饰变量为常量

extern
把本文内部的变量,声明为外部文件可使用的变量

1.3 变量分类
局部变量:
定义位置:函数内部
使用范围:函数内部
生命周期:函数被调用时创建,函数运行结束死亡

全局变量
定义位置:函数外部
使用范围:文件内部
生命周期:程序开始时创建,程序结束时死亡

静态变量
关键字: static

定义范围:无限制
生命周期:静态局部变量,函数第一次被调用时创建,程序结束时死亡
静态全局变量,私有化变量

外部声明
关键字: extern

定义范围:.h文件
使用范围:整个工程中调用.h文件的文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值