C语言学习笔记(重温要点七)

七.函数

函数的别称是方法,函数也就是完成某一特定功能的模块。
函数终止运行并返回到调用它的函数中去的常用方法:

  • 当执行到函数的最后一条语句后返回;
  • 当执行到语句return时返回。

1.函数类别

库函数:由C语言系统提供;用户无需定义,也不必在程序中作类型说明;只需在程序前包含有该函数定义的头文件。
自定义函数:用户根据需要而编写的函数。
无参函数:通常用来执行一些功能比较固定单一的语句。例:getchar();
有参函数:通常通过处理传递过来的参数,将函数值返回给调用处。例:sqrt(num);

2.函数的调用

函数的调用可能是由另一个函数触发,但函数的定义都是平行的,包括main函数在内。
平行有两层含义:一是不允许把一个函数定义在另一个函数内;二是不同函数定义放置位置没有关系,可以定义在main之前或main之后。
函数调用类型:先定义后调用;函数声明+函数调用。

3.函数定义与声明的语法

(1)函数定义有4个要素:参数列表,返回类型,函数名,函数体。

返回类型  函数名(参数列表)
{
	函数体;
}

函数名的本质是内存的代码地址。
(2)函数声明语法
基本形式:

返回类型  函数名(数据类型 形参,数据类型 形参,数据类型 形参,。。。);
返回类型  函数名(数据类型 ,数据类型 ,数据类型 ,。。。);

(3)两者区别

  • 函数定义四个要素不可或缺,函数声明被用来通知编译器被调函数的返回类型、名称和参数类型信息,相当于“接口”,声明时没有函数体而且形参的类型是关心的要点,形参的名称在声明时可省略。
  • 在某些情况下,函数的声明可以省略,如函数先定义后调用的情况,但函数的定义不能省略,且只能定义一次。
  • 函数定义结束时不用加分号,声明结束时必须加分号。直接在函数头后加上分号可作为函数声明。

4.形参和实参

【内存】函数调用之前,形式参数,也就是函数定义时()里的参数,值都不确定,不确定的值,不会分配内存,只有调用函数的时候,才会分配内存新建一个变量接受实际参数的值,当函数调用结束的时候,形参占据的内存会被回收。
实际参数是函数调用的时候,函数传递的确切值就是实际参数,实际参数可以是常量、表达式或者变量。
形参与实参内存地址不同,占用不同的内存空间。
函数调用时,编译器通过函数定义或声明知道形参类型,如果用户传递给被调用函数的实参不满足类型要求,则会产生类型转换,将实参转换成形参类型。
注:

  1. 实参向形参的数据传递是单向的“值传递”。
  2. 实参和形参的顺序应该一致且个数相等。
  3. 实参和形参的数据类型应尽量把持一致。

【副本机制】函数形式参数与实际参数的副本机制:
普通的变量有副本机制,数组没有副本机制,结构体也有副本机制。
结构体变量有副本机制,结构体数组没有副本,结构体变量中有数组也有副本机制。

5.return语句

使用return语句,可以使函数向调用处返回一个值。
功能:立即从所在的函数体中退出,返回到调用它的程序中去,同时返回一个值给调用它的函数。
当函数类型被定义为void类型以外的任意一种类型,函数内部必须出现return语句。
return语句中表达式的类型应与函数值类型一致,不一致时以函数值的类型为准。

6.调用函数

通过在程序中使用函数名称,可以执行函数中包含的语句,称为调用函数
函数之间允许相互调用,也允许嵌套调用
函数自己调用自己,称为递归调用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值