- 论坛徽章:
- 0
|
zsszss0000 发表于 2014-12-02 12:51
int * (* (* a)() ) ();
是不是可以理解为
(int * (*)()) a()回复 11# codechurch
肯定不对,立刻就可以知道,你看:
int * (* (* a)() ) (); /// 这里,a是指针 /// 看 (*a) 读: a是指针
(int * (*)()) a(); /// 这里,a是函数名, a() 先结合,读: a是函数(名)
int * (* (* a)() ) (); /// 这里,a首先是一个指针,这个指针指向一个函数,这个函数的类型如下:
typedef int * (* B())() ;
/// 这个类型B,看上去很怪,个别编译器可能不支持,但c语义上没错。
/// B是一个函数类型,函数的返回值是一个指针,而这个指针指向函数,这个函数的返回类型是指向整数的指针。
要看如何结合,
int ***a []; 等价于 int (*** (a[]) ); /// 这就是指针数组,比较常见。即:a是个数组,数组元素的类型是三级指针,最低级指向整数。
而下面不太常见:
int (***a) [] ; /// a是个三级指针,最低级指向数组,数组的元素是整数
|
|