最近在(深入理解C指针)的书上看到这么一节代码,) w: ]5 s& Z- {
对于我这新手来说,是没见过的!/ x: k% J8 S& b* {
大家对这个用法熟吗?能说说你们的意见吗?/ r' s7 O$ \% C) {# N/ y% O
- typedef int (*operation)(int, int);; {* B" c/ b# C" Z: @6 S" S' i0 V
- typedef int (*fptrOperation)(int,int);! D7 L. Z7 m g5 |5 [% z/ Z* t
- operation vector[128] = {NULL};1 P$ b, r k! ~8 Z
- 8 y S+ ~4 L0 A* z; {, T( F1 |6 j
- int add(int num1,int num2)1 z0 q( g) b( E* U
- {
9 P0 _1 _) S& n1 H" O - return num1 + num2;
0 u4 E7 F6 V6 V( A( f/ A - }
& N9 E# @9 ^3 f; [. t5 }1 p! _: a
0 n; Y' O* U$ J( S6 q. P- F5 u- int sub(int num1,int num2)
% k6 e: i( |3 S( m - {' r% L: H3 l0 a/ b$ R
- return num1 - num2;' F# }: G6 ~- X, q. W
- }. |% \2 B1 a H, X9 @5 E+ X/ Y
- + Z( y: |4 I; @
- void initVectorArray(void)
' F9 K9 K) D4 G8 {, f6 Z$ R - {
7 h e Q# C( k4 M: k - vector['+'] = add;
/ b) B* H- S+ g' n7 Q1 t" Y - vector['-'] = sub;; l6 i; Y% z* V. _
- }2 N3 a- Y3 I+ f. h
. Z* }* L1 y0 ^- int eva(char opcode,int num1,int num2)
0 }! Y& ~* v0 G - {
4 S* |1 K! Z2 e0 {( _$ B - fptrOperation operation;/ |$ ` V7 [1 e- ?
- operation = vector[opcode];5 b; k6 E5 o4 g7 f; V ?
- return operation(num1,num2);
8 H6 x: P+ N u - }+ W9 S+ R0 x! e2 P2 G. `
7 T$ t* Y8 m( b+ S3 |9 ?3 X- int main(void): t q) p5 g% ]% H v, c6 r. `
- {9 ~/ k: _5 F. s2 Z4 I
- initVectorArray();
2 f; B- T& Q( w& h6 w6 g - printf("%d\n",eva('+',5,6));* D- G! E# x& L) F# h
- printf("%d\n",eva('-',5,6));
+ O, w0 @9 e4 [ - 1 J% e8 e6 f8 z. t( q
- system("pause");
1 q7 ^- f0 O& {& ]4 J - return 0;/ g @& m4 e& ]$ U) r/ u
- }
复制代码
3 l9 P' J V+ P+ }
8 a: b/ d# K- R) [3 l% I9 z5 u) [ |
typedef unsigned int uint_8;
3 l& H# B. h5 K/ g$ O
uint_8 x,y;, Q D# y* r% e+ I8 \
typedef struct a) g5 R! T5 K( S1 q
{! ~" Z; C5 E$ w
......
}A; f g, P- K- n. ?4 P$ J5 }
1 d, v! F: V! T2 b/ L8 z* e* M: y
看来还是太菜了
1 @* M6 u: s! |4 |