C++中指针函数与函数指针的使用
指针函数
指针函数是一个函数,只不过指针函数返回的类型是某一类型的指针。
格式:
类型名* 函数名(函数参数列表)
使用:
/* * 指针函数,返回int* 指针变量 */ int* add(int a, int b) { int *p; int c = a + b; p = &c; return p; } int main() { int* p; p = add(1, 4); printf("%d\n", *p); getchar(); return 1; }
函数指针
函数指针是指向函数的指针变量。所以函数指针其实是指针变量,只不过该指针变量指向函数。
格式:
类型名 (*指针变量名) (函数参数列表)
函数指针的用途:
- a.调用函数
- b.做函数的参数
调用函数使用:
/* * 函数指针,调用函数 */ int fun1(int a, int b) { return a + b; } int main() { int(*p)(int, int); p = fun1; printf("%d\n", p(1, 5)); getchar(); return 1; }
函数参数使用:
/* * 函数指针,最为参数 */ int fun2(int a, int b) { return a + b; } int fun3(int a, int b, int(*f)(int, int)) { return f(a, b); } int main() { printf("%d\n", fun3(1, 5, fun2)); getchar(); return 1; }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
C++实践分数类中运算符重载的方法参考
[项目-分数类中的运算符重载] (1)实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简).比较(6种关系)的运算. class CFraction { private: int nume; // 分子 int deno; // 分母 public: //构造函数及运算符重载的函数声明 }; //重载函数的实现及用于测试的main()函数 (2)在(1)的基础上,实现分数类中的对象和整型数的四则运算.分数类中的对象可以和整型数进行四则运算,且运算符合交换律.例如:CFrac
-
C++实践Time类中的运算符重载参考方法
[项目-Time类中的运算符重载] 实现Time类中的运算符重载. class CTime { private: unsigned short int hour; // 时 unsigned short int minute; // 分 unsigned short int second; // 秒 public: CTime(int h=0,int m=0,int s=0); void setTime(int h,int m,int s); void display(); //二目的比较运算符
-
C++实践排序函数模板项目的参考方法
[项目-排序函数模板] 已知 void Sort(int a[],int size); void Sort(double a[],int size); 是一个函数模板的两个实例,其功能是将数组a中的前size个元素按从小到大顺序排列.试设计这个函数模板. 参考解答: #include<iostream> using namespace std; template<class T> void Sort(T set[],int n) { int i,j; T temp; for(i=1
-
C++函数指针和回调函数使用解析
函数指针 函数指针是指向函数的指针变量. 通常我们说的指针变量是指向一个整型变.字符型或数组等变量,而函数指针是指向函数. 函数指针可以像一般函数一样,用于调用函数.传递参数. 函数指针变量的声明: typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数.返回值的函数指针变量 实例 以下实例声明了函数指针变量 p,指向函数 max: #include <stdio.h> int max(int x, int y){ return x > y ? x
-
C++实践数组类运算的实现参考
[项目-数组类运算的实现] 设计数组类Array,为了实现测试函数中要求的功能,请补足相关的函数(构造.析构函数)和运算符重载的函数. 实现策略提示:可以将测试函数中的语句加上注释,取消一句的注释,增加相应的函数,以渐增地实现所有的功能,避免全盘考虑带来的困难. class Array { private: int* list; //用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数) public: //成员函数声明 }; //要求测试函数能够运行出正确.合理的结果:
-
剑指offer之C++语言实现链表(两种删除节点方式)
1 问题 用C++语言实现链表 2 代码实现 #include <iostream> #include <stdlib.h> using namespace std; class List { public: List(); ~List(); List* createNode(int value);//创建节点 bool insertNode(List *node);//插入节点 void printList();//打印节点 bool deleteNode(List *node)
-
C++为什么要用指针而不直接使用对象?
问题描述 我在使用 C++ 进行面向对象开发时,我发现一个很让我非常困惑的问题:C++ 中经常出现使用对象指针,而不是直接使用对象本身的代码,比如下面这个例子: Object *myObject = new Object; 而不是使用: Object myObject; 要不就是调用对象的方法(比如 testFunc())时不使用这种方式: myObject.testFunc(); 而是得写成这样: myObject->testFunc(); 我不明白代码为什么要写成这种形式,我能想到的是指针方
-
C++二维数组中数组元素存储地址的计算疑问讲解
关于二维数组中数组元素的存储地址,有同学问出了个好问题. 在我的课件中,出现了下面的讲解: a[i][j]的地址是p+(i*col+j)*d(d是数组元素所占的字节数). 同学编程序进行验证,出问题了: 地球停止转动了也必须先赞这种学习方式! 同学问:"老师,第一张图的4,我怎么觉得不对呢?第二张图我没4,结果好像也对,这里面差在哪呢?" 我的答复:"两个都对." 第一张图在讲原理,是我们在人脑里面要以"字节"为单位计算,p为首地址,单位是字节,
-
一张图总结C++中关于指针的那些事
指向对象的指针,指向数据成员的指针,指向成员函数的指针: 数组即指针,数组的指针,指针数组: 指向函数的指针,指向类的成员函数的指针,指针作为函数参数,指针函数: 指针的指针,指向数组的指针:常指针,指向常对象的指针: -- 大哥,这些都是什么鬼?! 用下面一张图全概括.用例子对照图示,有感觉,就用术语将概念大声地念出来,动员所有的感官参与,搞清楚这些,不是事. 图如下: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持.如果你想
-
Android Java调用自己C++类库的实例讲解
Android Java 如何调用自己的 C++ 的类库 下面以 Java 调用 C++ 的加法运算函数为例,做简单说明. (使用 Android Studio 3 编译) 首先编译 c++ 类库 创建独立目录存放 c++ 文件,例如 "app/src/main/cpp/add.cpp",内容如下 #include <jni.h> extern "C" JNIEXPORT jint JNICALL Java_com_example_liyi_demo_U
随机推荐
- Javascript 面向对象(二)封装代码
- 利用Ionic2 + angular4实现一个地区选择组件
- AngularJS中$http的交互问题
- jQuery验证手机号邮箱身份证的正则表达式(含港澳台)
- python使用正则表达式检测密码强度源码分享
- 提取oralce当天的alert log的shell脚本代码
- python批量导出导入MySQL用户的方法
- jquery实现div阴影效果示例代码
- Web前端框架bootstrap实战【第一次接触使用】
- jQuery设置和移除文本框默认值的方法
- jqGrid翻页时数据选中丢失问题的解决办法
- jQuery回车实现登录简单实现
- Js利用console计算代码运行时间的方法示例
- IIS启用GZip压缩的详细教程(图文)
- C#限速下载网络文件的方法实例
- thinkphp使用phpmailer发送邮件的方法
- java编程之递归算法总结
- Mysql5.7.17 winx64.zip解压缩版安装配置图文教程
- 浅谈springboot自动配置原理
- 微信小程序tab切换可滑动切换导航栏跟随滚动实现代码