函数返回指针怎么写

函数指针怎么写

1.c++的函数指针怎么写

如:

有一函数

void fun(void);//这是fun函数的声明

fun(){};//这是fun函数的调用

fun;//当只是函数的名字的时候就代表着函数入口的地址

这样,我们可以通过定义一个指针,然后使这个指针指向函数的入口,这样,我么就可以间接调用函数了。

具体例子

int main()

{void (*p)(int n);//声明函数指针的时候,参数的个数和类型必须和被指向的函数相同

void fun(int a);

p=fun;//指针p指向fun,fun是地址,正确

(*p)(0);//通过指针调用函数,与p();等价其中0是作为函数的参数

return 0;}

void fun(int a)

{}

因为函数的调用是需要一定的开销的,当一个函数经常被调用的时候,如果函数只有几行,这样我们可以通过inline函数来解决函数调用开销的问题。

但是如果函数有很多行且经常调用,那么,我们可以通过函数指针来解决函数调用开销的问题

2.谁帮我写一个指针函数的实例简单的

指针函数是指函数的返回值类型是一个指针类型,即本质是一个函数。

我们知道函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。

其定义格式如下所示:

返回类型标识符 *函数名称(形式参数表)

{ 函数体 }

返回类型可以是任何基本类型和复合类型。返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址相当于一个指针。比如函数返回一个整型值,实际上也相当于返回一个指针变量的值,不过这时的变量是函数本身而已,而整个函数相当于一个“变量”。例如下面一个返回指针函数的例子: #include <stdio.h>

float *find(float(*pionter)[4],int n);

main()

{

static float score[][4]={{60,70,80,90},{56,89,34,45},{34,23,56,45}};

float *p;

int i,m;

printf("Enter the number to be found:");

scanf("%d",&m);

printf("the score of NO.%d are:\n",m);

p=find(score,m-1);

for(i=0;i<4;i++)

printf("%5.2f\t",*(p+i));

}

float *find(float(*pionter)[4],int n)/*定义指针函数*/

{

float *pt;

pt=*(pionter+n);

return(pt);

}

共有三个学生的成绩,函数find()被定义为指针函数,起形参pointer是指针指向包含4个元素的一维数组的指针变量。pointer+n指向score的第n+1行。*(pointer+1)指向第一行的第0个元素。pt是一个指针变量,它指向浮点型变量。main()函数中调用find()函数,将score数组的首地址传给pointer.

3.怎样用函数指针做参数

列了几个简单的应用:

//形式1:返回类型(*函数名)(参数表)

#include<cstdio>

char (*pFun)(int);

char glFun(int a){printf("just a test,hehe\n"); return 'a';}

void main()

{

pFun = glFun;

(*pFun)(2);

}

//形式2:typedef 返回类型(*新类型)(参数表)

typedef char (*PTRFUN)(int);

PTRFUN pFun;

char glFun(int a){ return;}

void main()

{

pFun = glFun;

(*pFun)(2);

}

//形式三

#include<iostream>

using namespace std;

class CA

{

public:

char lcFun(int a){cout<<"just a test "<<a<<endl; return 'a'; }

};

typedef char (CA::*PTRFUN)(int);

int main()

{

CA ca;

PTRFUN pFun;

pFun=&CA::lcFun;

//ca.lcFun(2);

(ca.*pFun)(2);

return 0;

}

4.C语言中函数指针用法

函数在内存中有一个物理位置,而这个位置是可以赋给一个指针的。

一零点函数的地址就是该函数的入口点。因此,函数指针可被用来调用一个函数。

函数的地址是用不带任何括号或参数的函数名来得到的。(这很类似于数组地址的得到方法,即,在只有数组名而无下标是就得到数组地址。)

怎样说明一个函数指针变量呢 ?为了说明一个变量 fn_pointer 的类型是"返回值为 int 的函数指针", 你可以使用下面的说明语句:int (*fn_pointer) ();为了让编译器能正确地解释这句语句, *fn_pointer 必须用括号围起来。若漏了这对括号, 则:int *fn_pointer ();的意思完全不同了。

fn_pointer 将是一个函数名, 其返回值为 int 类型的指针。2:函数指针变量 在C语言中规定,一个函数总是占用一段连续的内存区, 而函数名就是该函数所占内存区的首地址。

我们可以把函数的这个首地址 ( 或称入口地址 ) 赋予一个指针变量, 使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。

我们把这种指向函数的指针变量称为 " 函数指针变量 " 。函数指针变量定义的一般形式为:类型说明符 (* 指针变量名 )();其中 " 类型说明符 " 表示被指函数的返回值的类型。

"(* 指针变量名 )" 表示 "*" 后面的变量是定义的指针变量。 最后的空括号表示指针变量所指的是一个函数。

例如: int (*pf)();表示 pf 是一个指向函数入口的指针变量,该函数的返回值 ( 函数值 ) 是整型。下面通过例子来说明用指针形式实现对函数调用的方法。

int max(int a,int b) { if(a>b)return a; else return b; } main() { int max(int a,int b);int(*pmax)();int x,y,z; pmax=max; printf("input two numbers:/n");scanf("%d%d",&x,&y);z=(*pmax)(x,y);printf("maxmum=%d",z);} 从上述程序可以看出用,函数指针变量形式调用函数的步骤如下:1>. 先定义函数指针变量,如后一程序中第 9 行 int (*pmax)(); 定义 pmax 为函数指针变量。2>. 把被调函数的入口地址 ( 函数名 ) 赋予该函数指针变量,如程序中第 11 行 pmax=max;3>. 用函数指针变量形式调用函数,如程序第 14 行 z=(*pmax)(x,y); 调用函数的一般形式为: (* 指针变量名 ) ( 实参表 ) 使用函数指针变量还应注意以下两点:a. 函数指针变量不能进行算术运算,这是与数组指针变量不同的。

数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而函数指针的移动是毫无意义的。b. 函数调用中 "(* 指针变量名 )" 的两边的括号不可少,其中的 * 不应该理解为求值运算,在此处它只是一种表示符号。

3:指针型函数 前面我们介绍过,所谓函数类型是指函数返回值的类型。 在C语言中允许一个函数的返回值是一个指针 ( 即地址 ) ,这种返回指针值的函数称为指针型函数。

定义指针型函数的一般形式为:类型说明符 * 函数名 ( 形参表 ) { …… /* 函数体 */ } 其中函数名之前加了 "*" 号表明这是一个指针型函数,即返回值是一个指针。类型说明符表示了返回的指针值所指向的数据类型。

如:int *ap(int x,int y) { …… /* 函数体 */ } 表示 ap 是一个返回指针值的指针型函数, 它返回的指针指向一个整型变量。下例中定义了一个指针型函数 day_name ,它的返回值指向一个字符串。

该函数中定义了一个静态指针数组 name 。 name 数组初始化赋值为八个字符串,分别表示各个星期名及出错提示。

形参 n 表示与星期名所对应的整数。在主函数中, 把输入的整数 i 作为实参, 在 printf 语句中调用 day_name 函数并把 i 值传送给形参 n 。

day_name 函数中的 return 语句包含一个条件表达式, n 值若大于 7 或小于 1 则把 name[0] 指针返回主函数输出出错提示字符串 "Illegal day" 。否则返回主函数输出对应的星期名。

主函数中的第 7 行是个条件语句,其语义是,如输入为负数 (i<0) 则中止程序运行退出程序。 exit 是一个库函数, exit(1) 表示发生错误后退出程序, exit(0) 表示正常退出。

应该特别注意的是函数指针变量和指针型函数这两者在写法和意义上的区别。如 int(*p)() 和 int *p() 是两个完全不同的量。

int(*p)() 是一个变量说明,说明 p 是一个指向函数入口的指针变量,该函数的返回值是整型量, (*p) 的两边的括号不能少。int *p() 则不是变量说明而是函数说明,说明 p 是一个指针型函数,其返回值是一个指向整型量的指针,*p 两边没有括号。

作为函数说明, 在括号内最好写入形式参数,这样便于与变量说明区别。 对于指针型函数定义,int *p() 只是函数头部分,一般还应该有函数体部分。

main() { int i; char *day_name(int n);printf("input Day No:/n");scanf("%d",&i);if(i<0) exit(1);printf("Day No:%2d-->%s/n",i,day_name(i));} char *day_n ame(int n) { static char *name[]={ "Illegal day","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"}; return((n<1||n>7) ? name[0] : name[n]);} 本程序是通过指针函数,输入一个 1 ~ 7 之间的整数, 输出对应的星期名。指针数组的说明与使用一个数组的元素值为指针则是指针数组。

指针数组是一组有序的指针的集合。指针数组的所有元素都必须是具。

5.如何定义指向函数的指针

一、定义一个函数指针的方法如下:

返回值类型 (* 指针变量名)([形参列表]);

1、int func(int x); /* 声明一个函数 */

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

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

二、函数指针的用法:

函数指针的应用:(*指针变量名)(参数列表)

如:int c=(*ptr)(a,b);/* 函数指针 的使用*/

在C语言中,函数本身不是变量,但是可以定义指向函数的指针,也称作函数指针,函数指针指向函数的入口地址。这种类型的指针可以被赋值、存放在数组中、传递给函数以及作为函数的返回值等等。

扩展资料:

指针函数和函数指针的区别:

1、这两个概念都是简称,指针函数是指返回值是指针的函数,即本质是一个函数。我们知道函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。

2、返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址相当于一个指针。比如函数返回一个整型值,实际上也相当于返回一个指针变量的值,不过这时的变量是函数本身而已,而整个函数相当于一个“变量”。

参考资料来源:百度百科-指针

参考资料来源:百度百科-函数指针

6.什么是函数指针

#include "stdio.h"

int func_k01(void);

int func_k02(void);

int func_k03(void);

int func_k04(void);

const all_func[]=

{

func_k01,

func_k02,

func_k03,

func_k04,

};

void main()

{

static int (*allkeyfunc)(); /*key function of all.*/

int retvalue;

char funcoffset;

for(funcoffset=0; funcoffset<4; funcoffset++)

{

allkeyfunc = all_func[funcoffset];

retvalue = (*allkeyfunc)();

printf("%d\n", retvalue);

}

}

int func_k01()

{

return(1);

}

int func_k02()

{

return(2);

}

int func_k03()

{

return(3);

}

int func_k04()

{

return(4);

}

7.指针函数,指向指针的指针

指针函数不同于函数指针。

函数指针声明为指针,它与变量指针不同之处是,它不是指向变量,而是指向函数。

函数指针有两个用途:调用函数和做函数的参数.

指针函数是函数,函数返回的不是数值,而是指针。

写法:

返回类型标识符 *返回名称(形式参数表){ 函数体 }

例如:

float *find();

main()

{

static float score[][4]={{60,70,80,90},{56,89,34,45},{34,23,56,45}};

float *p;

int i,m;

printf("Enter id: 1 or 2 or 3:");

scanf("%d",&m);

printf("goup %d data are:\n",m);

p=find(score,m-1);

for(i=0;i

函数指针怎么写

转载请注明出处育才学习网 » 函数返回指针怎么写

知识

罗梅芬用日文怎么写(罗钰潇日语怎么写)

阅读(21442)

本文主要为您介绍罗梅芬用日文怎么写,内容包括伊蕾娜日语怎么写,王雪菲用日文怎么说,张佳怡在日语中怎么写啊怎么读啊。罗 ら ラ ra钰 ぎょく ギョク gyoku潇 しょう シヨウ shou第一列:日语汉字,写法同汉字,都要用繁体,这三个都挺难写的,看

知识

邓先生的英文怎么写(1~40的英文怎么说)

阅读(10459)

本文主要为您介绍邓先生的英文怎么写,内容包括“邓先生”用英语怎么写,1~40的英文怎么说,漂亮英文beautiful缩写怎么写。1 one 2 two 3 three 4 four 5 five 6 six 7 seven 8 eight 8 nine 10 te

知识

一个人布满皱纹怎么写(描写人物皱纹的句子)

阅读(9539)

本文主要为您介绍一个人布满皱纹怎么写,内容包括描写人物皱纹的句子,描写人物皱纹的句子,皱纹怎么描写。、老人脸上布满了皱纹,那一条条曲折不均的像是墙上斑驳的印迹,爬满了面容,留下了岁月的痕迹。2、外祖父是一位年过六旬的白发老人。在他

知识

登录接口怎么写(php登录的接口怎么写)

阅读(7779)

本文主要为您介绍登录接口怎么写,内容包括php登录的接口怎么写,网页登陆接口怎么做,网站登录接口程序怎么做。PHP 接口 接口 使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。我们可以通过int

知识

档案奖惩情况怎么写(奖惩情况怎么写)

阅读(9618)

本文主要为您介绍档案奖惩情况怎么写,内容包括奖惩情况怎么写,个人简历及奖惩情况怎么填写,个人简历里面奖惩情况怎么写。在简历里的“奖励”部分,列出与你所获得的并与你的求职目标相关的荣誉、奖励和奖金。你既可以按时间顺序排列,也可以按

知识

头孢克肟拼音怎么写(头孢克肟的肟念什么)

阅读(8020)

本文主要为您介绍头孢克肟拼音怎么写,内容包括头孢克肟片全名拼音,头孢克肟片全名拼音,头孢克肟的肟念什么。肟[wò] :是含有羰基的醛、酮类化合物与羟胺作用而生成的有机化合物,可以参与许多有机化学反应,例如经典的Beckmann重排就是肟为底

知识

一库搜用日语怎么写(日语一库是什么意思)

阅读(8019)

本文主要为您介绍一库搜用日语怎么写,内容包括日语大神来,看动漫里的主人公说一句:恰,一库搜这是什么意思,一库一库;一搜库这两个日语是什么意思怎么写,看片都有“一库”(日语)是什么意。一库的意思就是“出发,出去”的意思。日语「行く」的音译

知识

外租无人机广告怎么写(植保无人机广告语)

阅读(7017)

本文主要为您介绍外租无人机广告怎么写,内容包括求一个无人机创意广告词谢谢巨友们了,求一关于无人机的广告标语,求一关于无人机的广告标语我们公司是做无人机的,新成立的公司,求。DJI大疆创新研发的的MG-1农业植保机专为农村作业环境设计,

知识

河南话que怎么写(河南话的nenna怎么写)

阅读(6546)

本文主要为您介绍河南话que怎么写,内容包括que怎么写,河南话的nenna怎么写,que怎么写。尿一壶(niào yī hú)关系密切,观点一致。例:“他俩今天尿一壶啦。”●尿(niào)⑴、从尿道排泄的液体。⑵、排泄小便。⑶、不放

知识

国学经文的论文怎么写(国学征文该怎么写)

阅读(7134)

本文主要为您介绍国学经文的论文怎么写,内容包括国学征文该怎么写,弟子规的400论文,关于国学经典的征文怎么写。“子曰:“温故而知新,可以为师”……小时,总是觉得国学就是没用的,古人写的话,我们还需要背,每次老师教给我们时,我总是会让思想开一

知识

化学实验总结怎么写(化学实验报告小结怎么写)

阅读(5414)

本文主要为您介绍化学实验总结怎么写,内容包括化学实验总结怎么写,化学实验报告小结怎么写,化学实验小结怎么写。化学实验报告的书写: 一般情况下化学实验报告是根据实验步骤和顺序从七方面展开来写的: 1.实验目的:即本次实验所要达到的目标或

知识

蝴蝶豌豆拼音怎么写(豌豆的拼音是什么)

阅读(5842)

本文主要为您介绍蝴蝶豌豆拼音怎么写,内容包括蝴蝶怎么拼音的,豌豆的拼音是什么,蝴蝶的拼音是什么。豌豆的拼音是[wān dòu]。豌豆是豆科一年生攀援草本,高0.5-2米。全株绿色,光滑无毛,被粉霜。叶具小叶4-6片,托叶心形,下缘具

知识

海绵宝宝用英文怎么说(海绵宝宝用英文怎么说)

阅读(6527)

本文主要为您介绍海绵宝宝用英文怎么说,内容包括海绵宝宝用英语怎么说,海绵宝宝用英文怎么说,海绵宝宝英文名是什么。1. SPONGEBOB SQUAREPANTS 近期很夯的一步卡通影片《海绵宝宝》(SpongeBob SquarePants)是一系

知识

茶盏怎么用(茶盏在茶道中干嘛用)

阅读(5437)

本文主要为您介绍茶盏怎么用,内容包括茶盏怎么用我要写一篇200字左右的茶盏的使用说明,求指教,茶盏在茶道中干嘛用,问一下斗笠盏如何使用现在是不是很少有人使用它,它的意义。苏东坡的名句"从来佳茗似佳人",典型地代表了唐宋及以后的文人墨客,

知识

thinkpad小红点怎么用(怎么学习使用thinkpad小红点)

阅读(7604)

本文主要为您介绍thinkpad小红点怎么用,内容包括怎么学习使用thinkpad小红点,thinkpad小红点怎么用,求教:THINKPAD的小红点使用方法。Thinkpad 小红点最高效的使用方法为:左手拇指按左键,无操作时在左键待命2、右手拇指按右键,同时兼按空格键及