/*============================================================================Name        : TestFunction.cAuthor      : lfTime        : 2015年2月23日16:06:17Copyright   : Your copyright noticeDescription : 函数指针与指针函数的使用与小结在C语言中:函数名其实就是一个函数的起始地址.同理:数组名其实就是数组首元素的地址.函数指针在程序中定义了一个函数,那么在编译时编译系统为函数代码分配一段存储空间,这段存储空间的起始地址称为这个函数的指针.可定义一个指向函数的指针变量存放函数的起始地址,即该指针变量指向该函数.例如:int (*p)(int,int);定义p是指向函数的指针变量.它所指向的函数输入参数为两个int型,返回值为int型.p的类型用int (*)(int,int)表示指针函数函数返回值是指针.定义方式:类型名 *函数名(参数表列);小结:区分指针函数与函数指针最简单的方式:看函数名前面的指针*号有没有被括号包含,如果被包含就是函数指针,反之则是指针函数其实从字面意思也可以看出来些端倪:指针函数:本质是一个函数,返回值为一个指针的函数函数指针:本质是一个指针,只不过该指针指向了一个函数============================================================================*/#include <stdio.h>
#include <stdlib.h>//声明sub函数
int sub(int a,int b);
//利用typedef定义sub的函数指针
typedef int (*subFunction)(int a,int b);//声明一个指针函数
int *fu(int x);
//利用typedef定义一个指针函数的类型typedef
typedef int *func(int x);int main(void) {testFunctionPointer();testPointerFunction();return EXIT_SUCCESS;
}//函数指针
void testFunctionPointer() {//函数名其实就是一个函数的起始地址printf("sub function address=%x\n", sub);printf("======================\n");//利用函数指针调用sub方法subFunction s = sub;//此时s指向了sub函数的起始地址.所以打印结果同上printf("s function address=%x\n", s);printf("======================\n");s(9, 3);
}int sub(int a,int b){int c;c=a-b;printf("sub result=%d\n",c);printf("======================\n");return c;
}//指针函数
void testPointerFunction() {//方式一int number = 9527;int *p = fu(number);//取出地址中的内容*pprintf("number=%d\n", *p);printf("======================\n");//方式二int num = 502;//注意这句func *f = fu;int *pointer = f(num);//取出地址中的内容*pointerprintf("num=%d\n", *pointer);printf("======================\n");
}int *fu(int x){int address=&x;return address;
}

函数指针与指针函数的使用与小结相关推荐

  1. c/c++中的函数指针和指针函数

    定义 1.指针函数,本质是函数,返回值为指针,形如,int *pfun(int, int),由于"*"的优先级低于"()"的优先级,所以等同于int *(pfu ...

  2. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  3. Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参

    1. 复合数据类型 Go 语言基本的复合数据类型有指针.数组.切片.字典.通道.结构和接口等.格式如下: * pointerType // 指针类型, [n]elementType // 数组类型, ...

  4. C指针6:指针变量作为函数参数

    在C语言中,函数的参数不仅可以是整数.小数.字符等具体的数据,还可以是指向它们的指针.用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着 ...

  5. C++成员变量指针和成员函数指针【The semantics of funcitons】

    原文:https://blog.csdn.net/laojiu_/article/details/68946915 (原文有笔误) 1. #include <cstdio> #includ ...

  6. 用指针、子函数的方法去一维数组中所有元素的平均值,并放在a[0]处

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p142 7.1.2 上级实训内容 [实训内容7]用指针.子函数的方法去一维数组中所有元素的平均值,并放 ...

  7. 函数指针与指针函数的区别

    原文:http://yliangliang.blog.sohu.com/86320000.html 一.函数指针 首先它是一个指针,只是这个指针指向的是一个函数.指针变量可以指向变量的地址.数组.字符 ...

  8. 多态指针访问虚函数不能被继承的类快速排序N皇后问题插入排序堆排序merge归并排序栈上生成对象两个栈实现一个队列...

    多态 /*1. 要想实现覆盖(重写)父类必须声明为virtual,子类可以不声明为virtual.-->FunB()2. 派生类重写基类的虚函数实现多态,要求函数名.参数列表.返回值完全相同.( ...

  9. 初论函数指针、指针函数、指针的指针

    一.指针函数 1.定义 指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针 函数返回值类型 函数名(参数表) int * f(int x,int y); //函数返回值类型是in ...

  10. c c++ 函数内数组初值_C/C++函数指针与指针函数

    关于指针,前面文章C语言指针详解有过介绍,这里主要讨论函数指针和指针函数. 1 什么是指针? 定义:指针是程序数据在内存中的地址,而指针变量是用来保存这些地址的变量; 上面一个 4GB 的内存可以存放 ...

最新文章

  1. python交叉编译第三方库_第三方库交叉编译
  2. CentOS7重新生成 /boot/grub2/grub.cfg
  3. Google MapReduce架构设计
  4. java数据从本地文件中取出_java 从数据库取数据并存入本地文本中
  5. OpenGL动感模糊
  6. priority case语句
  7. 部署Vista – 第2部分:理解Windows安装程序和Windows映像文件格式
  8. (2)Mac安装Parallels无法上网
  9. 数据库入门-主键和外键设置
  10. 创新驱动 | 悬镜安全持续入选《CCSIP 2021中国网络安全产业全景图》
  11. mac快捷键大全超清示意图动态壁纸
  12. Vue 炫酷 Echarts 图表
  13. FlashFXP使用阿里云ECS私钥登录
  14. Edge浏览器查看请求头(2022)
  15. 天蝎项目整机柜服务器技术规范,天蝎整机柜服务器技术规范25.doc
  16. 线性代数 | (1) 矩阵Part One
  17. GCN变体-graphSAGE
  18. 卷积核的优势-权值共享与局部感知能力
  19. 《拍拍二手》微信小程序开发经验谈
  20. jmp指令流程图怎么写_流程图模板

热门文章

  1. 关闭CISCO不必要的服务
  2. Katalon Studio自动化测试框架使用【1】--- 环境安装以及基础配置(MacOS)
  3. JAVA SE学习day_13 :Map 查找表
  4. 分享Kali Linux 2017年第18周镜像文件
  5. mysql 添加多条数据类型_向数据库添加多条数据类型
  6. dede/archives_do.php,dedecms后台编辑文章时archives_do.php显示空白解决办法
  7. 事务配置_SSH(五)- 使用注解方式配置事务管理
  8. qc linux mysql 安装教程_mysql5.7在centos上安装的完整教程以及相关的“坑”
  9. 三星Galaxy S8得到Daydream支持
  10. Augmented World Expo(AWE)重磅来袭!