64,646
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
double f1() { return 1.0; }
double f2() { return 2.0; }
double f3() { return 3.0; }
double f4() { return 4.0; }
double f5() { return 5.0; }
double f6() { return 6.0; }
double f7() { return 7.0; }
double f8() { return 8.0; }
double f9() { return 9.0; }
int main(void)
{
double (*e[9])() = { f1, f2, f3, f4, f5, f6, f7, f8, f9 };
int i;
for(i = 0; i < 9; ++i)
printf("%d: %f\n", i, e[i]());
return 0;
}
#include <stdio.h>
double f1() { return 1.0; }
double f2() { return 2.0; }
double f3() { return 3.0; }
double f4() { return 4.0; }
double f5() { return 5.0; }
double f6() { return 6.0; }
double f7() { return 7.0; }
double f8() { return 8.0; }
double f9() { return 9.0; }
typedef double (*t)();
int main(void)
{
t e[9] = { f1, f2, f3, f4, f5, f6, f7, f8, f9 };
int i;
for(i = 0; i < 9; ++i)
printf("%d: %f\n", i, e[i]());
return 0;
}
#include "stdafx.h"
#include <iostream>
using namespace std;
//直接定于typedef doube(*)() (*e)[2];不行,但用以下两句代替:
typedef double (*pFun)();//定义函数指针pFun
typedef pFun (*e)[2];//定义型别e,是个指针
double Fun1()
{
cout<<"Fun1"<<endl;
return 1;
};
double Fun2()
{
cout<<"Fun2"<<endl;
return 2;
};
int main()
{
pFun array[2]= {Fun1, Fun2};
array[0]();//执行Fun1
array[1]();//执行Fun2
//示例1
e MyE = &array;//将array的首地址付给MyE
cout<<sizeof(MyE)<<endl;//既然是指针,长度自然为4(32位机上)
cout<<sizeof(*MyE)<<endl;//(两个指针)长度为8(32位机上)
(*MyE[0])();//执行Fun1,注意优先级,其实就是 (*(MyE[0]))();
//(*MyE[1])();//此句将导致异常,很简单地址位移了8,指到array后面了。注意MyE[1];等价于MyE++;
(*MyE)[0]();//执行Fun1
(*MyE)[1]();//执行Fun2
//cout<<"--------------------------"<<endl;
return 0;
}
typedef double(*ptr)();
ptr e[9];
#include <iostream>
using namespace std;
int fun(int a)
{
return a;
}
typedef
int(*funname)(int a);
typedef
int(*funarray[3])(int a);
int main()
{
int (*test[1])(int a) = {fun};
cout<<test[0](2)<<endl;
funname test1 = fun;
cout<< test1(3)<<endl;
funarray test2 = {fun};
cout<<test2[0](4)<<endl;
return 0;
}
typedef double(*pFuny)();
typedef pFuny (*pFunParamy)[9];
pFunParamy e;