哈哈哈,又到记笔记的时候了,偶尔写一下防止颓废!也多少白嫖别人的,再自己总结一下,
函数指针与指针函数的本质
指针函数本质是一个函数,其返回值为指针 。
函数指针本质是一个指针,其指向一个函数,----可以在程序中用指针来调用函数--后面代码有引用
函数指针
在说函数指针之前我们要先聊一下函数:
我们在声明一个函数后,那么系统会为这个函数分配一段存储空间,与数组类似,这段空间的首地址就是函数名,
所以一个地址就可以用指针变量来存放,由此函数指针就诞生了
格式: 函数返回值类型(*指针变量名)(函数参数列表);
例如: int (*p)(int x, int y );//这个语句 就定义了 一个 指向函数 的 指针变量p 。
其次,要注意:前面的int表示这个指针变量可以指向返回值类型为int型的函数。
下面就看具体应用
#incldue <iostream>
using namespace std;
int Max(int ,int );//声明一个函数,---可以省略形参的变量名,但是类型一定不能省去
int main()
{
int (*p) (int , int);//定义了一个函数指针
int a, b, c;
p=Max;//把函数名Max(函数首地址)赋给指针变量p,使得p指向Max函数
cout<<"请输入a和b"<<"\n";
cin>>a>>b;
cout<<"\n\n\n";
c=(*p) (a, b);//直接通过函数指针来调用函数Max-----这里是函数指针的应用---亮点
cout<<"a="<<a<<"\n\n";
cout<<"a="<<a<<"\n\n";
cout<<"max="<<c<<"\n\n";
cin.get();cin.get();//吸收一个字符
return 0;
}
int Max(int x ,int y)//子函数
{
int z;
if(x>y) z=x;
if(x<y) z=y;
return z;
}
下面是结果
指针函数
上述已经解释,其实就是结构上不一样与函数指针就在格式上少了一个小括号,跟普通一样来记就行了
如
int* p(int x, int y);//其实与普通函数并有什么区别,就是返回值的数据类型是一个指针即就是一个地址
上面的“*”可以在任何位置不影响,可以这样即 int *p(int x, int y);
同样也可以这样int * p(int x ,int y);