|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
函数指针
函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是一致的。函数指针有两个用途:调用函数和做函数的指针变量名) (指针变量名 )”中的括号不能省,若省略整体则成为一个函数说明,说明了一个返回的指针变量,所以可把函数max()赋给ptr作为ptr的值,即把max()的入口地址赋给ptr,以后就可以用ptr来调用该函数,实际上ptr和max都指向同一个入口地址,不同就是ptr是一个指针变量,不像函数名称那样是死的,它可以指向任何函数,就看你想怎么做了。在程序中把哪个函数的地址赋给它,它就指向哪个函数。而后用指针变量调用它,因此可以先后指向不同的函数。不过注意,指向函数的指针变量没有++和--运算,用时要小心。
指针函数
指针函数,指针函数是指带指针的函数,即本质是一个函数。函数都有返回类型(如果不指针变量的值,不过这时的变量是函数本身而已,而整个函数相当于一个“变量”。例如下面一个返回指针函数的例子:
- #include <stdio.h>
- float *find(float(*pionter)[4],int n);//函数声明
- int main(void)
- {
- 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));
-
- return 0;
- }
-
- float *find(float(*pionter)[4],int n)/*定义指针函数*/
- {
- float *pt;
- pt=*(pionter+n);
- return(pt);
- }
复制代码 共有三个学生的成绩,函数find()被定义为指针函数,其指针变量。pointer+n指向score的第n+1行。*(pointer+1)指向第一行的第0个元素。pt是一个指针变量,它指向数组的首地址传给pointer.
- [hide]//指针函数是指返回值是指针的函数,即本质是一个函数
- #include<iostream>
- using namespace std;
- int main()
- {
- float *find(float (*p)[4],int m);//查询序号为m的学生的四门课程的成绩
- float score[][4]={{50,51,52,55},{70,70,40,80},{77,99,88,67}};//定义成绩数组,第一维可以为变量
- float *pf=NULL;//定义一个指针时一定要初始化
- int i,m;
- cout<<"请输入您想查询的学生的序号:";
- cin>>m;
- pf=find(score,m);//返回为一维数组指针,指向一个学生成绩
- for(i=0;i<4;i++)
- cout<<*(pf+i)<<" ";
- cout<<endl;
- return 0;
- }
- float *find(float (*p)[4],int m)
- {
- float *pf=NULL;
- pf=*(p+m);//p是指向二维数组的指针,加*取一维数组的指针
- return pf;
- }
- [/hide]
复制代码
|
|