0 extern int a;//全局变量的声明
1 int a;//一个整数类型的变量
2 int* a;//一个int类型的指针
3 int a[3];//一个int类型的数组,数组长度为3
4 int* a[3];//一个int类型的指针数组,数组长度为3
5 int a[2][3];//一个int类型二维数组
6 int* a[2][3];//二维数组 指针数组
7 int a();//函数声明 返回值是int,形参是void
8 a();//函数调用,或者函数指针调用
9 int* a();//函数声明 返回值是int*,形参是void
10 *a();//函数调用之后马上解引用(说明函数的返回值是个地址)
11 int a(int); int a(int b); extern int a(int);//函数声明 返回值是int,形参是int
12 a(3);//函数调用 传实参3
13 int* a(int); int* a(int b); int* a(int,int);//函数声明 返回值是int*,形参是int
14 *a(3);//函数调用 传实参3,函数调用之后马上解引用(说明函数的返回值是个地址)
15 int (*a)();/*函数指针的定义*/ extern int (*a)();/*函数指针的声明*/
16 (*a)();//通过一个函数指针来调用函数
17 int* (*a)();//函数指针的定义,只能指向返回值是int*,形参是void的函数
18 int* (*a)(int);//函数指针的定义,只能指向返回值是int*,形参是int的函数
20 (*a)(3);//通过一个函数指针来调用函数,传了一个实参
21 int (*a[3])() = {f1,f2,f3};//函数指针数组定义
22 (*a[0])();//函数指针数组 的调用
23 *(*a[0])(5); //函数指针数组 的调用,传了一个实参5,并且返回值解引用了
24 (int)a;/*强转*/ (int)a(); /*调函数之后返回值强转*/
25 (int*)a;/*强转*/
26-------------------
typedef 类型 别名;
typedef int (*a)(); typedef int (*别名)(); //
a aa;//定义单个函数指针
a bb[3];//定义函数指针数组
27-------------------
int a[2][3];
int b[2][4];
int (*pa)[3] = a;//指向二维数组的指针,且第二维度必须是3
//pa = b;
28-------------------
int* a( int* (*b)(int*) );//函数声明,返回值是int*,形参是函数指针,
int* f(int*){}
a( f );
--------------归纳-----------------------
函数声明:类型 简单的一个名字(可有形参)
函数调用:无类型 名字(实参)
函数指针定义:类型 (*a)(可有形参);
函数指针数组定义:类型 (*a[N])(可有形参);
函数指针的调用: 无类型 (*a)(实参)
函数指针的调用: 无类型 (*a[N])(实参)
强转: (类型)名字
(类型)名字(实参)