一般的函数调用

一个通常的函数调用的例子:

/* 自行包含头文件 */

void MyFun(int x); /* 此处的声明也可写成:void MyFun(int) */

int main(int argc, char* argv[])

{

MyFun(10); /* 这里是调用MyFun(10) 函数 */

return(0);

}

void MyFun(int x) /* 这里定义一个MyFun函数 */

{

printf("%d\n",x);

}

这个MyFun函数是一个无返回值的函数,它并不“完成”什么事情。这种调用函数的格式你应该是很熟悉的吧!看主函数中调用MyFun函数的书写格式:

MyFun(10);

我们一开始只是从功能上或者说从数学意义上理解MyFun这个函数,知道MyFun函数名代表的是一个功能(或是说一段代码)。

直到——学习到函数指针概念时。我才不得不在思考:函数名到底又是什么东西呢?(不要以为这是没有什么意义的事噢!呵呵,继续往下看你就知道了。)

函数指针变量的声明

就象某一数据变量的内存地址可以存储在相应的指针变量中一样,函数的首地址也以存储在某个函数指针变量里的。这样,我就可以通过这个函数指针变量来调用所指向的函数了。

在C系列语言中,任何一个变量,总是要先声明,之后才能使用的。那么,函数指针变量也应该要先声明吧?那又是如何来声明呢?以上面的例子为例,我来声明一个可以指向MyFun函数的函数指针变量FunP。下面就是声明FunP变量的方法:

void (*FunP)(int) ; /* 也可写成void (*FunP)(int x)*/

你看,整个函数指针变量的声明格式如同函数MyFun的声明处一样,只不过——我们把MyFun改成“(*FunP)”而已,这样就有了一个能指向MyFun函数的指针FunP了。(当然,这个FunP指针变量也可以指向所有其它具有相同参数及返回值的函数了。)

c语言漫函数,漫谈C指针:函数名其实也是指针相关推荐

  1. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  2. 指针数组,数组指针,指针函数,函数指针,二级指针详解

    先看个简单的:char *p,这定义了一个指针,指针指向的数据类型是字符型,char  *(p)定义了一个指针P: char *p[4], 为指针数组,由于[]的优先级高于*,所以p先和[]结合,p[ ...

  3. 在c语言中指针变量名前面的*表示其后面的,C语言中的指针

    -------------------------------指针--------------------------------- 指针? 内存单元的编号也叫做地址.既然根据内存单元的 号或地址就可 ...

  4. C语言-指针-基础用法、运算、指针与数组、指针数组、多级指针、void指针和const修饰符-学习笔记08

    文章目录 1. 地址和变量 2. 指针 2.1 基本声明 2.2 指针的目标 3. 指针的运算 3.1 指针的赋值运算 3.2 指针的算术运算 3.2.1 指针与常量的加法与减法 3.2.2 两指针相 ...

  5. Golang——指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针

    指针: 指针是一个特殊的变量,因为存储的数据不仅仅是一个普通的数据,而是一个变量的内存地址,指针本身也是有内存地址的 指针的数据类型有int.float.bool.string.数组.结构体 指针的作 ...

  6. C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例

    C语言:一个涉及指针函数返回值与printf乱码.内存堆栈的经典案例 一个奇怪的C语言问题,涉及到指针.数组.堆栈.以及printf.以下实现: 整数向字符串的转换,返回字符串指针,并在main函数中 ...

  7. 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )

    文章目录 一.判定指针合法性 二.数组越界 三.不断修改指针变量值 四.函数中将栈内存数组返回 五.函数间接赋值形参操作 六.指针取值与自增操作 一.判定指针合法性 判定指针合法性时 , 必须进行如下 ...

  8. 【C 语言】字符串模型 ( 字符串翻转模型 | 抽象成业务函数 | 形参返回值 | 函数返回值 | 函数形参处理 | 形参指针判空 )

    文章目录 一.字符串翻转模型 业务函数 二.完整代码示例 一.字符串翻转模型 业务函数 将上一篇博客 [C 语言]字符串模型 ( 字符串翻转模型 ) 的代码 , 主要业务逻辑 , 抽象成函数 ; 字符 ...

  9. 【C 语言】结构体相关 的 函数 指针 数组

    . 作者 : 万境绝尘 转载请注明出处 : http://www.hanshuliang.com/?post=30 . 结构体概述 : 结构体是 多个 变量的集合, 变量的类型可以不同; -- 可进行 ...

最新文章

  1. https open api_钉钉API发送消息
  2. 【机器学习入门到精通系列】Logistic回归多分类图示
  3. python判断正确错误_第16天:Python 错误和异常
  4. phpcms v9 配置sphinx全文索引教程
  5. 美国GIS的19个研究方向
  6. U-Mail邮件网关鉴伪防窃杜绝“家贼”
  7. 上半年产品原型设计Axure rp稿(持续更新)
  8. 2504(多项式求和)
  9. vue hot true 不起作用_Vue + Flask 小知识(二)
  10. Oracle创建视图的一个问题
  11. AJAX,PHP,前端简单交互制作输入框效果
  12. 《App后台开发运维和架构实践》勘误
  13. 沧小海基于xilinx srio核的学习笔记之第四章 Xilinx SRIO的示例分析(一)
  14. 在 Hexo 中使用 iconfont 图标
  15. 金蝶系统无法建立数据可连接服务器,金蝶K3打开,提示无法建立数据链接
  16. 计算机系的对联,轻松写对联 微软亚洲研究院推出电脑对联
  17. ZenBrush(禅宗画笔)反编译后二次开发(电子签名_毛笔带笔锋的效果)
  18. Brotli压缩算法
  19. 键盘上哪个键是ESCAPE键?
  20. OpenStack——nove组件部署

热门文章

  1. AD进行PCB拼板设计
  2. 在C/C++代码中使用windows性能监视器
  3. Type-c接口移动电源方案
  4. 玩转大学——大学新生入学告诫
  5. 更新Ubuntu内核到最新版本
  6. 图片压缩并上传(file格式)
  7. 【解决方案】视频字幕生成+自动翻译字幕(中英,中法视频,双语字幕制作)
  8. GIt部署到linux服务器
  9. Android 软键盘显示隐藏判断
  10. B站(bilibili)对未登录用户视频观看进行暂停和弹窗的分析与简单解决方案