C++笔记——指针函数/函数指针
两者主要区别,一个是函数(指针函数),一个是指针变量(函数指针)。
指针函数
(1)定义
指针函数:顾名思义就是带有指针的函数,即其本质是一个函数,只不过这种函数返回的是一个对应类型的地址。
(2) 定义式
type *func (type , type)
如:int *max(int x, int y)
首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。
(3)演示代码
#include <iostream> using namespace std; int *GetNum(int x); //指针函数声明形式 void main(void) { cout<<"===============start================"<<endl; int num; cout<<"Please enter the number between 0 and 6: "; cin>>num; cout<<"result is:"<<*GetNum(num)<<endl; //输出返回地址块中的值 } int *GetNum(int x) { static int num[]={0,1,2,3,4,5,6}; return &num[x]; //返回一个地址 }
子函数返回的是数组中某一元素所在的地址值,输出的是这一地址中存储的数。
函数指针
(1)定义
函数指针:指向函数的指针变量,本质上是一个指针变量
(2) 定义式
type (*func)(type , type )
如:int (*max)(int a, int b)
这个特殊的指针指向一个返回整型值的函数。指针的声明必须和它指向函数的声明保持一致。指针名和指针运算符外面的括号改变了默认的运算符优先级。如果没有圆括号,就变成了一个返回整型指针的函数的原型声明。
#include <iostream> using namespace std; int max(int a, int b) { return a>b?a:b; } void main(void) { cout<<"===========start==========="<<endl; int (*func)(int,int); //定义一个指向该函数形式的指针变量 func=max; //或者 func=&max; 将max函数的首地址赋给指针funcint a,b; cout<<"Please enter two numbers:"; cin>>a>>b; int result=(*func)(a,b); //运用指针变量调用函数 cout<<"max="<<result<<endl; }
参考:
http://blog.csdn.net/aigoleague/article/details/8622665
http://blog.csdn.net/u014131641/article/details/51104808
C++笔记——指针函数/函数指针相关推荐
- C++阶段01笔记汇总【C++软件安装、C++初识、数据类型、运算符、程序流程结构、数组、函数、指针、结构体】
C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 C++课程安排 1 C++初识 1.1 第一个C++程序 1.1.1 创建项目 1.1.2 创建文件 1.1.3 编写代码 1. ...
- C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】
C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...
- 【C语言学习笔记】26. 指针(3)指向指针的指针、传递指针给函数
前言 指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链.通常,一个指针包含一个变量的地址.当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置. ...
- C语言学习笔记10-指针(动态内存分配malloc/calloc、realloc、释放free,可变数组实现;Tips:返回指针的函数使用本地变量有风险!;最后:函数指针)
C语言:指针 1. 指针:保存地址的变量 *p (pointer) ,这种变量的值是内存的地址. 取地址符& 只用于获取变量(有地址的东西)的地址:scanf函数-取地址符 地址的大小 ...
- C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)
1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...
- Go 学习笔记(13)— 指针定义、指针特点、空指针、指针数组、指向指针的指针、指针作为函数入参
1. 复合数据类型 Go 语言基本的复合数据类型有指针.数组.切片.字典.通道.结构和接口等.格式如下: * pointerType // 指针类型, [n]elementType // 数组类型, ...
- C++ Primer 5th笔记(6)chapter6 函数:函数指针
1. 函数指针 bool lengthCompare(const string&, const string&); bool (*pf)(const string&, cons ...
- 12-黑马程序员------C 语言学习笔记--- C语言指针与函数
黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训.Android培 ...
- 【黑马程序员 C++教程从0到1入门编程】【笔记1】数据类型、运算符、程序流程结构、数组、函数、指针、结构体
黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 文章目录 1.C++初识 1.1 第一个c++程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 2 ...
- 【学习笔记】【C语言】返回指针的函数
函数如果带*的返回的就是指针 char *test() { } 1 #include <stdio.h> 2 char *test(); 3 4 /* 5 返回指针的函数 6 */ 7 ...
最新文章
- Matplotlib可视化散点图、配置X轴为对数坐标、并使用线条(line)连接散点图中的数据点(Simple Line Plot with Data points in Matplotlib)
- 解决android 编译失败 Unexpected scopes found in folder
- 回馈粉丝,包邮送一台全新iPad
- java怎么捕捉除数异常_Java异常的捕获及处理---小总结
- BZOJ 1878 HH的项链 | 主席树
- 飞秋下载2010正式版_飞秋下载
- nginx php 源码安装,Nginx和php安装及配置一之编译安装nginx-1.8.0
- java解析xml报文_java 如何解析http请求返回的xml报文
- MySQL05:DCL语言、视图
- Stepper MNKit
- HDU 1016 DFS
- 荒野大镖客ol 服务器位置,荒野大镖客OL盗贼据点分布位置
- 【Android 学习记录】:针对Android 7.0 抓不到HTTPS包的情况
- mysql mpm_mysql mpm
- 周未特别节目《前赤壁赋》
- 郑捷 机器学习算法与编程实践 --ID3决策树 python3 代码
- Js——ES2015(ES6)基础语法
- 科学大家谈 | 全球著名蛋白质工程学家——张阳
- 微信吸粉技巧之:微社区
- c/c++中的内存分配器