一 概述
本节课主要讲述使用typedef替换指针,并演示其基本使用
二 简化形式
1
| typedef void(*p)(float&x,float&y);
|
三 示例演示及结果输出
3.1 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #include<iostream> using namespace std; typedef void(*p)(float&x,float&y); void square(float&x,float&y){x=x*x;y=y*y;} void cube(float&x,float&y){x=x*x*x;y=y*y*y;} void print(p vp,float&x,float&y) { cout<<"执行函数前"<<endl; cout<<"x:"<<x<<"\t"<<"y:"<<y<<endl; vp(x,y); cout<<"执行函数后"<<endl; cout<<"x:"<<x<<"\t"<<"y:"<<y<<endl; } void swap(float&x,float&y){float z;z=x;x=y;y=z;} int main() { float a=2,b=3; char choice='0'; int i; //void (*p[5])(float&x,float&y); p vp; for( i=0;i<5;i++) { cout<<"(0)退出(1)正方(2)立方(3)交换x和y的值:"; cin>>choice; bool quit=false; switch(choice) { case '0': quit=true; break; case '1': vp=square; break; case '2': vp=cube; break; case '3': vp=swap; break; default: vp=0; break; } if(quit) break; if(vp==0) { cout<<"请输入一个从0到3之间的数字"<<endl; i=i-1; continue; } print(vp,a,b); } return 0; }
|
3.2 输出结果
1 2 3 4 5 6 7 8
| (0)退出(1)正方(2)立方(3)交换x和y的值:1 第1次执行,到第5次结束 初始值 长:2宽:3 现在调用函数指针数组p[0]所指向的函数... 运算后 长:4宽:9 (0)退出(1)正方(2)立方(3)交换x和y的值:
|