博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++学习笔记(5):指针函数与函数指针
阅读量:7023 次
发布时间:2019-06-28

本文共 835 字,大约阅读时间需要 2 分钟。

  hot3.png

1)指针函数是指带指针的函数,本质上还是一个函数,函数返回类型是某一类型的指针。

类型标识符 *函数名(参数表)

int *f(xy);

首先它是一个函数,只不过它的返回值是个地址。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。

表示:

Float *function();

float*p;

P = function(a);

注意:指针函数与函数指针的表示方法不同,不能混淆,最简单的区别方法就是看函数名前面的*号有没有被()包含,若被包含则为函数指针,否则是指针函数。

2)函数指针是指向函数的指针变量,即本质是一个指针变量。

int (*f) (int x); /* 声明一个函数指针 */

f=func; /* func函数的首地址赋给指针f */ 

指向函数的指针包含了函数的地址,可以通过它来调用函数,声明格式如下:

类型说明符 (*函数名)(参数)

这个函数名更应该叫做指针的变量名。这个特殊的指针指向一个返回整型值的函数。指针的声明必须和它指向函数的声明保持一致。指针名和指针运算符外面的括号改变了默认的运算符优先级。如果没有圆括号,就变成了一个返回整型指针的函数的原型声明。

例如:

Void (*fptr)();

把函数的地址赋值给函数指针,可以采用下面两种格式:

Fptr = &function;

Fptr = function;

取地址运算符&不是必需的,因为单单一个函数标识符就标号表示了它的地址,如果是函数调用,还必须包含一个圆括号括起来的参数表。

可以采用如下两种方式来通过指针调用函数:

X = (*fptr)();

X = fptr();

第二种格式看上去和函数调用无异。但是有些程序员倾向于使用第一种格式,因为它明确指出是通过指针而非函数名来调用函数的。

转载于:https://my.oschina.net/jintao/blog/80644

你可能感兴趣的文章
js 对文件操作
查看>>
使用python学习【机器学习】需要安装的库~
查看>>
【Container With Most Water】cpp
查看>>
[译]Chipmunk教程 - 3 初始化
查看>>
PHP-获取文件夹大小
查看>>
集群结构、分布式结构、单机结构
查看>>
win7计划任务执行BAT文件问题
查看>>
设置开机启动时指定非ROOT用户执行相应的脚本
查看>>
第十次作业
查看>>
AngularJS之WebAPi上传(十)
查看>>
数组的连续子数组最大和(首尾相连)
查看>>
《Programming in Lua 3》读书笔记(一)
查看>>
HTML元素的ID和Name属性的区别
查看>>
【Spring AOP 详解】
查看>>
字典树模板
查看>>
python基础练习-购物车
查看>>
poj 2406 && poj 1961 (KMP)
查看>>
Flutter: AnimatedCrossFade 在两个给定的子节点之间交叉淡化,避免大量三元表达式...
查看>>
iOS圆形图片裁剪,原型图片外面加一个圆环
查看>>
位运算
查看>>