关于c语言函数

函数

  • 定义

:函数是一个完成特定工作的独立程序模块,包括库函数和自定义函数两种

  • 函数的一般形式:

函数类型 函数名(形式参数表) ——函数首部
{
函数实现过程
}

  • 函数解析

在进行函数声明时需要加上分号,而下面进行函数定义时无需加上分号。

1.函数首部

1.1 由函数类型、函数名和形式参数表构成,位于函数定义的第一行。
1.2 在函数首部中,函数名是函数整体的称谓,需要用一个合法的标识符来表示。
1.3 函数类型指函数结果返回的类型,一般与return语句中表达式的类型一致。
1.4 函数首部后面不能加分号,它和函数体一起构成完整的函数定义。
注:形参必须标明指定参数的数据类型

2.函数体
2.1 函数体体现函数的实现过程,由一对大括号内的若干条语句组成,用以计算,或完成特定的工作,并用return语句返回运算的结果。
2.2 从主调函数中得到的已知条件才定义为形参,其他的需要工作单元都定义为普通变量。

3.函数的调用
3.1 调用标准库函数时,只需要在程序的最前面用#include命令包含相应的头文件;调用自定义函数,程序中必须有与调用函数相对应的函数定义。
3.2 调用过程:
从主函数main()开始,如果遇到某个函数调用,主函数被暂停执行,转而执行相应的函数,该函数执行完后将返回主函数,然后再从原先暂停的位置继续执行。
3.3 函数调用形式:
函数名(实际参数表)
实际参数(实参)可以是常量、变量、表达式。
参数传递:函数定义时,位于首部的参数被称为形参。主调函数的参数被称为实参。形参的值除了能接受实参的值,使用方法与普通变量类似。形参和实参必须一一对应,两者数量相同,类型尽量相同。程序运行遇到函数调用,实参的值依次传给形参,这就是参数传递。
函数中的形参必须是变量,用于接收实参传递过来的值;而实参可以是变量、常量或者表达式,其作用是把常量、变量和表达式的值传递给形参。如果实参是变量,它所对应的形参是两个不同的变量。实参是主调函数的,形参是自定义函数的,两者可以同名,也可不同名
按照c语言的规定,在参数传递过程中,将实参的值复制给形参。这种参数传递是单向的,只允许实参把值复制给形参,形参的值即使改变了,也不会反过来影响实参

3.4 函数返回结果
return 表达式;
一般情况下表达式的类型与函数类型应一致,以函数为准。return语句的作用有两个:一是结束函数的运行;二是带着运算结果(表达式的值)返回主调函数。
在函数体中,return语句中的表达式反映了函数运算的结果,通过return语句将该结果回送给主调函数。但return语句只能返回一个值,如果函数产生了多个运算结果,将无法通过return返回。
3.5函数原型声明
c语言要求函数先声明后调用,就像变量先定义后使用一样。如果自定义函数被放在主调函数后面,就需要在函数调用前,加上函数原型声明。
函数声明的目的主要是说明函数的类型和参数的情况,以保证程序编译时能判断对该函数的调用是否正确

  • 不返回结果的函数

有时候调用函数不是为了得到某个结果不是为了得到某个运算结果而是为了让它产生某些作用。
格式:void 函数名(形参表)
{
函数实现过程
}
函数类型是void,表示不返回结果,函数体可以使用没有表达式的return语句,也可以省去return。void函数虽然不直接返回一个值,但它的作用通常以屏幕输出等方式体现。

关于全局变量和局部变量
c语言中把定义在函数内部的变量称为局部变量,局部变量的有效范围局限在所在函数内部。形参是局部变量。
c语言中把定义在函数外而不属于任何一个函数的变量称为全局变量。全局变量作用范围是从定义开始到程序所在文件的结束,它对作用范围内所有的函数起作用

关于变量生存周期和静态局部变量
变量生存周期:
除了主调函数的局部变量,其他的函数一旦结束并返回主调函数,其中的局部变量(自动变量)自动由系统回收。变量从定义开始分配存储单元,到运行结束存储单元被回收,整个过程被称为变量生存周期。
变量存储的内存分布:
c语言中把保存所有的变量的数据区分成动态存储区和静态存储区。动态存储区用堆栈来管理,适合函数动态分配和回收存储单元。而静态存储区相对固定,管理较简单,用来存放全局变量和静态变量。
静态变量:存放在静态存储区,不会像普通变量因为函数调用结束而被回收,它的生存周期会持续到程序结束。由于存储单元被保留,一旦含有静态局部变量的函数被再次调用,则静态局部变量会被重新激活,上一次函数调用后的值仍然保存着,可供此次调用使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值