1 #include <iostream>
2 using namespace std;
3
4 /* 原来自己一直误解了typedef的含义啊,应该是新定义了一种类型,类型名就是我们
的变量名,变量名是什么样的类型,我们定义的类型就是什么类型的。比如,FuncPtr> 是一个只想一个函数值为空的带两个char参数的函数指针。然后使用时,用FuncPtr定> 义的变量就是一个指向这类函数的一个指针。
5 */
6 typedef void (*FuncPtr)(char, char);
7 typedef char* charPtr;
8 #define charPtr2 char*
9
10 void func1(char a, char b)
11 {
12 cout << "func1(" << a << "," << b << ") is called" << endl;
13 }
14
15 void func2(char a, char b)
16 {
17 cout << "func2(" << a << "," << b << ") is called" << endl;
18 }
19
20 int main()
21 {
22 FuncPtr fp1 = func1;
23 fp1('g', 'l');
24 FuncPtr fp2 = func2;
25 fp2('d', 'a');
26
27 char myString[10] = "one test";
28 const char* p1 = myString;
29 const charPtr p2 = myString;
30 const charPtr2 p3 = myString;
31 cout << (++ p1) << endl;
32 // typedef和define不同在于,typedef并不是象define一样的简单替换,这里
33 // p2是只读(read-only),不能自加。
34 // cout << (++ p2) << endl;
35 cout << (++ p3) << endl;
36
37 return 0;
38 }
39
40 /* output:
41 g,l) is called
42 func2(d,a) is called
43 ne test
44 ne test
45 */
46