目录
✅《C游记》 专栏 ✅ 《小玄的C游之旅》
(壹)数组参数、指针参数
在写代码的时候难免要把【数组】或者【指针】传给函数,这时候就出现了问题,我们在函数的参数这一块该如何设计呢?
🌈 1.1 一维数组传参
一维数组进行传参的时,函数参数可以写成 数组 或 指针( 因为数组名是地址,可用指针接收)
其中参数是数组时,数组大小可写也可不写;
参数是指针时要找到对应的指针类型才行;
传递参数是普通数组 arr(3种方式)
🌈 1.2 二维数组传参
对于二维数组,可以不知道有多少行,但必须知道一行多少个元素
🌈 1.3 一级指针传参
思考:
当一个函数的参数部分为一级指针的时候,函数能接收什么参数?
比如:
🌈 1.4 二级指针传参
思考:
当函数的参数为二级指针的时候,可以接收什么参数?
(贰)函数指针
首先看一段代码:
输出的是两个地址,这两个地址是test函数的地址。 那我们的函数的地址要想保存起来,怎么保存?
下面我们看代码:首先,能给存储地址,就要求pfun1或者pfun2是指针,那哪个是指针?
答案是:
pfun1可以存放。
pfun1先和 * 结合,说明pfun1是指针,指针指向的是一个函数,指向的函数无参数,返回值类型为 void 。
阅读两段有趣的代码:
代码2太复杂,如何简化:
解析:
signal 是一个函数声明
signal函数的第一个参数是int,第二个参数是函数指针
signal函数的返回类型为函数指针
signal函数的第二个参数是函数指针,该指针指向的函数
参数是int,返回类型为void
signal函数的返回类型也是一个函数指针,该函指针指向的函数
参数是int,放回类型为void
(叁) 函数指针数组
数组是一个存放相同类型数据的存储空间,那我们已经学习了指针数组, 比如:
那要把函数的地址存到一个数组中,那这个数组就叫 函数指针数组
那函数指针的数组如何定义呢?
答案是:
parr1 parr1先和[]结合,说明parr1是数组,数组的内容是什么呢?
是int (*)()类型的函数指针。
函数指针数组的用途:转移表
使用函数指针数组的实现: