一般的函数调用

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

/* 自行包含头文件 */

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. GitHub 的微服务架构设计与实践
  2. 浅议Windows 2000/XP Pagefile组织管理
  3. SharePoint 2007 Web Content Management 性能优化系列 前言
  4. JavaFX给控件添加css样式
  5. 给字符串对象定义一个repeat功能。当传入一个整数n时,它会返回重复n次字符串的结果。
  6. 网管交换机与非网管交换机的利弊介绍
  7. 第三章·MySQL版本区别及管理
  8. qq群机器人宠物系统java_QQ群机器人——宠物游戏
  9. php开发bt种子,[原创作品][PHP]BT种子打包推送小神器~~
  10. Xshell——连接服务器
  11. 关于最近的总结(收心)
  12. 【CHATGPT-3.5】如何使用ChatGPT的同时并学习记忆
  13. 宝塔Linux面板使用
  14. input text 默认值设置
  15. Visual Micro for Microsoft Visual Studio 2022.08
  16. 程序员加薪升职之成长金字塔
  17. TeradataSQL基础
  18. php培训视频全套,43G 干货分享 2017年泰牛PHP全套视频+培训全套完整版课件
  19. kotlin发音!腾讯3轮面试都问了Android事件分发,已开源
  20. 伯克利的电气工程和计算机科学专业,斯坦福大学与加州大学伯克利分校电气工程专业对比...

热门文章

  1. 如何使用微信web开发者工具调试企业微信
  2. win10装linux虚拟机contos,利用win10自带虚拟机hyper-v安装centos7方法详解
  3. 今天收到模拟飞行平台X-Plane 11官方邮件
  4. 颜值才是王道:IKBC - C87 黑色红轴机械键盘
  5. WEB基础学习笔记01
  6. 如何辨别该公司是不是培训机构的技巧
  7. 【持续更新】影视资源采集站 影视站长必备全部资料整理
  8. 用echarts实现柱形图、折线图、堆积图的闪烁效果
  9. 蓝牙耳机适合跑步戴吗,五款适合跑步蓝牙耳机推荐
  10. 服务器硬盘可以放笔记本里面,可以给笔记本加硬盘吗