读书人

int ( * ( *x ) [10]) (); //解释解决

发布时间: 2012-03-23 12:06:21 作者: rapoo

int ( * ( *x ) [10]) (); //解释

C/C++ code
int ( * ( *f ) () )[10]; int ( * ( *x ) [10]) ();

//f为一个函数指针,函数返回值为一个指向整型数组的指针。
//x为一个数组指针,数组元素为指向返回值为整型的函数的指针。
//这样的理解正确吗?
#PointersOnC

[解决办法]
f是个函数指针,指向一个返回指针的函数,这个函数返回的指针指向一个int类型的数组.
x是个指向数组的指针,这个数组是个由指针组成的数组,数组里的每个指针指向一个返回类型为int的函数



-------------
年轻人

[解决办法]
探讨
int ( * ( *f ) () )[10];

如何里看出来的??

int( *p)(); //函数指针, int fun();

int* (*p)(); //函数指针,返回值类型为int*


int ( * ( *f ) () )[10]; 这个是如何看??

[解决办法]
int ( * ( *f ) () )[10];
f f
* f is pointer
( )() f is pointer to function
* f is pointer to function return pointer
( )[10] f is pointer to function return pointer to array..10 of
int f is pointer to function return pointer to array..10 of int

结果: f 是一个函数指针,该函数返回一个指针,该指针指向一个整形数组

int ( * ( *x ) [10]) ();
x x
* x is pointer
( ) [10] x is pointer to array of
* x is pointer to array of pointer
( ) (); x is pointer to array of pointer to function return
int x is pointer to array of pointer to function return int

结果: x是一个数组的指针,该数组是一个函数指针数组,函数返回整形。
[解决办法]
从这里开始:
(*x)[10]表示 x是数组指针

(*x) ==> B
B[10] ==> A
int (* A)() ==> A 是参数为void返回值为int的函数指针
即 B[10] 是参数为void返回值为int的函数指针
而 B 又是一个有10个元素的数组
数组元素是什么不是很明确的嘛


探讨

C/C++ code


int ( * ( *x ) [10]) ();

*x 表示x 是指针

(*x)[10]表示 x是数组指针

用A 替换(*x)[10];

int (* A)() 表示A是一个函数指针。其中A所指向的函数返回int,参数void

A 是一个数组的指针。 数组元素是什么啊????


替换不出来,郁闷
[img=http://forum.csdn.net/……

读书人网 >C语言

热点推荐