函数指针与指针函数的用法区别(函数指针和指针函数有什么区别)
本文目录
- 函数指针和指针函数有什么区别
- 函数的指针和指针的函数有什么区别
- 函数指针和指针函数有啥区别
- 指针函数和函数指针的区别
- 请教C++中函数型指针和指针型函数的用法和区别,谢谢
- c语言指针函数和函数指针有什么不同
- 函数指针与指针函数的区别
- C++中指针函数和函数指针的概念和区别
- 函数指针和指针函数有什么区别!!
- C语言中,指针函数和函数指针有什么区别
函数指针和指针函数有什么区别
1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。 表示: float *fun(); float *p; p = fun(a); 注意指针函数与函数指针表示方法的不同,千万不要混淆。最简单的辨别方式就是看函数名前面的指针*号有没有被括号()包含,如果被包含就是函数指针,反之则是指针函数。 2、函数指针是指向函数的指针变量,即本质是一个指针变量。 int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 指向函数的指针包含了函数的地址,可以通过它来调用函数。声明格式如下: 类型说明符 (*函数名)(参数) 其实这里不能称为函数名,应该叫做指针的变量名。这个特殊的指针指向一个返回整型值的函数。指针的声明笔削和它指向函数的声明保持一致。 指针名和指针运算符外面的括号改变了默认的运算符优先级。如果没有圆括号,就变成了一个返回整型指针的函数的原型声明。
函数的指针和指针的函数有什么区别
简单点说指针就是地址的意思!!函数的指针 即该函数所占连续内存单元的首地址,如:□□□...□□□↑"□□□...□□□"代表函数所占的内存单元,里面的内容是各种指令;函数的指针就是“↑”所指向的地址。一般用来调用一组类似的函数,从而方便的书写程序。也比较符合结构化设计的原则。指针函数 就是返回值为指针的函数,一个函数经过运算之后得到的结果是一个指针(即地址)。一般的用法是求得这个指针再用它调取地址所存的值。
函数指针和指针函数有啥区别
函数指针和指针函数的区别:一、【函数指针】 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。 1、函数指针定义 函数类型(*指针变量名)(形参列表); “函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。 例如: int (*f)(int x); double (*ptr)(double x); 在定义函数指针时请注意: 函数指针和它指向的函数的参数个数和类型都应该是—致的; 函数指针的类型和函数的返回值类型也必须是一致的。 2、函数指针的赋值 函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。 例如, int func(int x); /* 声明一个函数 */ int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。 3、通过函数指针调用函数 函数指针是通过函数名及有关参数进行调用的。 与其他指针变量相类似,如果指针变量pi是指向某整型变量i的指针,则*p等于它所指的变量i;如果pf是指向某浮点型变量f的指针,则*pf就等价于它所指的变量f。同样地,*f是指向函数func(x)的指针,则*f就代表它所指向的函数func。所以在执行了f=func;之后,(*f)和func代表同一函数。 由于函数指针指向存储区中的某个函数,因此可以通过函数指针调用相应的函数。现在我们就讨论如何用函数指针调用函数,它应执行下面三步: 首先,要说明函数指针变量。例如:int (*f)(int x); 其次,要对函数指针变量赋值。 例如: f=func; (func(x)必须先要有定义) 最后,要用 (*指针变量)(参数表);调用函数。 例如: (*f)(x);(x必须先赋值) 【例】任意输入n个数,找出其中最大数,并且输出最大数值。 main() { int f(); int i,a,b; int (*p)(); /* 定义函数指针 */ scanf("%d",&a); p=f; /* 给函数指针p赋值,使它指向函数f */ for(i=1;i《9;i++) { scanf("%d",&b); a=(*p)(a,b); /* 通过指针p调用函数f */ } printf("The Max Number is:%d",a) } f(int x,int y) { int z; z=(x》y)?x:y; return(z); } 运行结果为: 343 -45 4389 4235 1 -534 988 555 789 The Max Number is:4389 二、【指针函数】 一个函数不仅可以带回一个整型数据的值,字符类型值和实型类型的值,还可以带回指针类型的数据,使其指向某个地址单元。 返回指针的函数,一般定义格式为: 类型标识符 *函数名(参数表) int *f(x,y); 其中x,y是形式参数,f是函数名,调用后返回一个指向整型数据的地址指针。f(x,y)是函数,其值是指针。 如:char *ch();表示的就是一个返回字符型指针的函数,请看下面的例题: 【例】将字符串1(str1)复制到字符串2(str2),并输出字符串2. #include "stdio.h" main() { char *ch(char *,char *); char str1="I am glad to meet you!"; char str2="Welcom to study C!"; printf("%s",ch(str1,str2)); } char *ch(char *str1,char *str2) { int i; char *p; p=str2 if(*str2==NULL) exit(-1); do { *str2=*str1; str1++; str2++; }while(*str1!=NULL); return(p); } 通过分析可得: 函数指针是一个指向函数的指针,而指针函数只是说明他是一个返回值为指针的函数, 函数指针可以用来指向一个函数。
指针函数和函数指针的区别
1、指针函数:指的就是返回值是指针的函数,本质就是个函数。2、函数指针:指的是指向函数的指针变量,本质就是个指针。
用法1、指针函数:int* func(int a,int b);普通函数就是int func(int a,int b);,返回值是int,而指针函数就是返回值是指针的函数,即返回值是int*。
2、函数指针:int (*func)(int x,int y);这里定义了一个函数指针,只不过这个指针的格式有点特殊,正常定义的指针是把指针变量放到最后的,即int* p ;,p是指针变量,但是函数指针是把指针变量放到了中间,即func是指针变量,而且这是一个指向函数的指针变量,而具体指向哪个函数是自己定的。
请教C++中函数型指针和指针型函数的用法和区别,谢谢
1 函数指针变量 在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);4) 调用函数的一般形式为: (*指针变量名) (实参表)使用函数指针变量还应注意以下两点:a) 函数指针变量不能进行算术运算,这是与数组指针变量不同的。数组指针变量加减一个整数可使指针移动指向后面或前面的数组元素,而函数指针的移动是毫无意义的。b) 函数调用中"(*指针变量名)"的两边的括号不可少,其中的*不应该理解为求值运算,在此处它只是一种表示符号。2 指针型函数 前面我们介绍过,所谓函数类型是指函数返回值的类型。在C语言中允许一个函数的返回值是一个指针(即地址),这种返回指针值的函数称为指针型函数。定义指针型函数的一般形式为: 类型说明符 *函数名(形参表) { …… /*函数体*/ } 其中函数名之前加了“*”号表明这是一个指针型函数,即返回值是一个指针。类型说明符表示了返回的指针值所指向的数据类型。如: int *ap(int x,int y) { ...... /*函数体*/}表示ap是一个返回指针值的指针型函数,它返回的指针指向一个整型变量。【例】本程序是通过指针函数,输入一个1~7之间的整数,输出对应的星期名。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_name(int n){ static char *name={ "Illegal day", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; return((n《1||n》7) ? name);} 本例中定义了一个指针型函数day_name,它的返回值指向一个字符串。该函数中定义了一个静态指针数组name。name数组初始化赋值为八个字符串,分别表示各个星期名及出错提示。形参n表示与星期名所对应的整数。在主函数中,把输入的整数i作为实参,在printf语句中调用day_name函数并把i值传送给形参n。day_name函数中的return语句包含一个条件表达式,n值若大于7或小于1则把name指针返回主函数输出出错提示字符串“Illegal day”。否则返回主函数输出对应的星期名。主函数中的第7行是个条件语句,其语义是,如输入为负数(i《0)则中止程序运行退出程序。exit是一个库函数,exit(1)表示发生错误后退出程序,exit(0)表示正常退出。应该特别注意的是函数指针变量和指针型函数这两者在写法和意义上的区别。如int(*p)()和int *p()是两个完全不同的量。int (*p)()是一个变量说明,说明p是一个指向函数入口的指针变量,该函数的返回值是整型量,(*p)的两边的括号不能少。int *p()则不是变量说明而是函数说明,说明p是一个指针型函数,其返回值是一个指向整型量的指针,*p两边没有括号。作为函数说明,在括号内最好写入形式参数,这样便于与变量说明区别。对于指针型函数定义,int *p()只是函数头部分,一般还应该有函数体部分。
c语言指针函数和函数指针有什么不同
如楼上所说 。指针函数 的本质是 函数 ,只是他的返回值 类型 是指针变量。比如 int * A(int num); 这就是一个 指针函数。函数指针 是一个 指针变量 ,只不过 他是 指向函数的 指针变量。比如 有函数定义 如上 int * A(int num); 再有 int (*pf)(int num);则是 pf = A;就把 函数A的首地址 赋值给 pf 函数指针了。
函数指针与指针函数的区别
函数指针是一个指针,其一般表现形式为:返回值类型(*变量名)(参数),它可以指向相同类型的函数;指针函数是一个函数,其一般表现形式为:返回值类型* 函数名(参数);本质还是一个函数,返回值是指针类型。一个是指针,一个是函数
C++中指针函数和函数指针的概念和区别
函数指针:一种特殊的指针,他只能指向函数的入口地址,定义方法如下:
int (*p)(int,int); //定义一个函数指针p,只能指向返回值为int,形参为两个int的函数
返回指针的函数:一个函数,他的返回值是指针,比如:
int *p(int,int);{ //函数体}
这是一个形参为两个int类型,返回值是int型指针的函数
函数指针和指针函数有什么区别!!
前一个是个函数指针,如果有个函数是这样定义的int pfunction( )那就可以用指针指向这个函数p=pfunction;然后调用时就可以这样用p();后一个是指针函数,他的返回值是一个指向整型变量的指针,
C语言中,指针函数和函数指针有什么区别
在C语言中指针函数和函数指针是两个不同的概念,不能混淆。指针函数本质上是函数,是一个返回类型为指针的函数,如:int* max(int *array,int n){//找最大值的地址return 最大值的地址;}max就是一个指针函数。而函数指针本质上是指针,是指向函数的指针,如:int (*funp)(int a,int b);funp就是一个函数指针,可以用它指向一个返回类型为int、有两个int类型的参数的函数。
本文相关文章:
函数指针与指针函数的用法区别(C++中指针函数和函数指针的概念和区别)
2024年8月7日 15:50
函数指针与指针函数的用法区别(函数指针和指针函数有什么区别!!)
2024年7月19日 09:30
更多文章:
匈奴为何总是让中原王朝头疼不已匈奴巅峰时期势力有多大?最近很火的一款类似小小部落一样的养成类手机游戏是啥
2024年7月15日 21:17
打发时间正合适,这四款赛车游戏刺激好玩?有一款单机飙车游戏 可以使用地雷和油桶道具
2024年7月1日 06:20
传奇世界2时光倒流区什么职业好?传奇世界2战士厉害还是道士厉害非常详细的!谢啦!
2024年6月14日 07:44
火凤凰奇迹经典区加点 火凤凰奇迹经典区法师加点?火凤凰奇迹圣导师带马还是鹰
2024年5月3日 01:23
卡车模拟器欧洲2中文版(欧洲卡车模拟器二最新版可以用手机玩吗)
2024年6月24日 15:23
邮件营销大师(邮件群发软件,邮件营销大师这个软件 好用吗,有没有人用过这个软件啊)
2024年7月23日 06:17
免费的外网连接器(推荐一个免费的远程控制软件、外网也能用的 我想吧家里面的电脑开着然后外面进入家里面的电脑桌面可)
2024年9月28日 13:30
拼多多一件代发货源网(拼多多商家版怎么找货源一件代发 具体操作步骤)
2024年7月8日 02:25