8



        第八章

1.无参函数的定义形式:

类型标识符   函数名()

{

    语句

}

类型标识符和函数名称函数头;类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。

2.有参函数定义

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

   

     声明部分

     语句

    

在形参表列中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号间隔。

3.声明与定义不同

函数的声明就是声明一个函数的名字,只是说明函数的名字,不涉及函数的实现,即没有函数体,所以函数的声明只包括前三个部分。

函数的定义包含了一个函数的所有部分。

4.值传递:参数间数据单向的值传递

5.抽象理解形参和实参:

实参是一个抽屉的钥匙,在传参时,实参复制了一把钥匙传给形参,而被调函数拿到钥匙副本后,进行的操作可以分为两类:

1)对钥匙本身做了一些操作(对指针本身进行操作)

(2)通过钥匙对抽屉里的内容进行了一些操作(对指针所指的变量进行操作)

6.结构体数组做函数参数:

  包括两类情况:结构体数组元素作为实参和结构体数组名作为实参。(都服从数据的单向值传递原则,前者传给形参的是某些变量的,后者传给形参的是结构体数组的首地址。)

7.如何编写有多个返回值的C语言函数

   (1)利用全局变量

  (2)传递数组指针

   (3)传递结构体指针

8.回调函数:

   当这个函数指针被用来调用它所指向的函数时,我们就说这个函数式回调函数。

应用:比较函数,查找函数

9.可变参数问题

   1printf实现

2)运行时确定

 3)可变长参数的传递

     4)可变长参数中类型为函数指针。

      5)可变长参数的获取

     6)定义可变长参数的一个限制。

10.9题的解决

1)定义一个头文件专门用来对付可变参数列表。

2)通过定义一个“void*”类型的参数,用它来指向实际的参数区,然后在函数中根据需要任意解释他们的含义。

3)定义被调用函数的参数为va_list类型,同时在调用函数中将可变长参数列表转换为va_list,这样就可以进行变长参数的传递。

4)将函数指针用typedef定义成一个独立的数据类型。

 (5)注意加宽原则

 6)至少得定义一个固定参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值