帮你理解复杂的指针函数数组的声明…

??????? //1
int func(int);//定义一个函数,该函数返回值int,接受一个int型参数;结合顺序为:func(int)--int func(int)

//2
//int *return_pointer_array_func1(int)[10];return_pointer_array_func1返回指针数组的函数,
//结合顺序为:return_pointer_array_func1(int)--return_pointer_array_func1(int)[10]--*return_pointer_array_func1(int)[10]
//--int *return_pointer_array_func1(int)[10]

//3
//int return_array_func1(int)[10];//定义一个函数return_array_func1,该函数返回值int[10],接受一个int型参数;
//结合顺序为return_array_func1(int)--return_array_func1(int)[10]--int return_array_func1(int)[10]

//4~5
//??????? 两者之间差别是,前者是拥有10个整型指针为元素的数组,array1是一个数组名.(存放指针的数组)
//??????? 后者是pointer1是一个指针,该指针指向拥有10个整型变量为元素的数组.(指向数组的指针)
int *array1[10];//结合顺序为 array1[10]-- *array1[10]--int *array1[10]
int (*pointer1)[10];//结合顺序为 *pointer1--(*pointer)[10]--int (*pointer)[10]
//pointer1=array1;是错误的 两者类型不相同.

//6
int (*return_array_pointer_func(int))[10];//定义一个返回数组指针的函数return_array_pointer_func.结合顺序为:
//return_array_pointer_func(int)--*return_array_pointer_func(int)--(*return_array_pointer_func(int))[10]
//--int (*return_array_pointer_func(int))[10]

//7
int (*func_pointer_array[10])(int);//定义一个返回int,接受一个int参数的函数指针数组.结合顺序为:
//func_pointer_array[10]--(*func_pointer_array[10])--(*func_pointer_array[10])(int)--int (*func_pointer_array[10])(int)

//8
int (*(*func_pointer_pointer_array)(int))[10]; //定义一个函数指针的指针的数组.结合顺序为:
//*func_pointer_pointer_array--(*func_pointer_pointer_array) (int)--( *(*func_pointer_pointer_array) (int))
//--( *(*func_pointer_pointer_array) (int))[10]--int ( *(*func_pointer_pointer_array) (int))[10]

//9
int *(*(*fun_pointer_pointer_array_pointer)(int)) [10]; //定义一个函数指针的指针数组的指针.结合顺序为:
//*fun_pointer_pointer_array_pointer--*fun_pointer_pointer_array_pointer)(int)--(*(*fun_pointer_pointer_array_pointer)(int))
//--(*(*fun_pointer_pointer_array_pointer)(int)) [10]--*(*(*fun_pointer_pointer_array_pointer)(int)) [10]
//--int *(*(*fun_pointer_pointer_array_pointer)(int)) [10]

//10
float ( * ( *getvalue()) [] )();?? 定义一个函数,该函数不接受参数,返回值类型是一个指针,返回值类型是一个指针数组
//返回值类型是一个指针数组指针,返回值类型是一个指针数组函数指针,该函数有一个float返回值,不接受参数 结合顺序为:
//getvalue()--( *getvalue())--( *getvalue()) [] --( * ( *getvalue()) [] )--( * ( *getvalue()) [] )()
//--float ( * ( *getvalue()) [] )();
//定义一个函数,该函数不接受参数,返回值类型是一个指针,返回值类型是一个指针数组,返回值类型是一个指针数组指针,返回值类型是一个指针数组函数指针,该函数有一个float返回值,不接受参数

//11
void * ( *func_pointer1) ( char, int (*)()); //定义一个函数指针,结合顺序为:
//*func_pointer1--( *func_pointer1) ( char, int (*)())--void * ( *func_pointer1) ( char, int (*)());

//12
void ** (*func_pointer2) (int &, char **(*)(char *, char **));? //定义一个指针,该指针是一个函数指针,该函数接受两个参数,
//一个参数是int &型,一个是char **(*)(char*,char**)型,返回值是void **型.结合顺序为:
//*func_pointer2--(*func_pointer2) (int &, char **(*)(char *, char **))--
//** (*func_pointer2) (int &, char **(*)(char *, char **))--void ** (*func_pointer2) (int &, char **(*)(char *, char **));

//13
float ( * ( * func_array_pointer1[10]) (int &) ) [5];//定义一个数组,该数组存放指针,该数组存放函数指针,
//函数的返回值是指向数组的指针,参数是int &.结合顺序为:
//func_array_pointer1[10]--* func_array_pointer1[10]--( * func_array_pointer1[10]) (int &)--
//( * ( * func_array_pointer1[10]) (int &) )--( * ( * func_array_pointer1[10]) (int &) ) [5]
//--float ( * ( * func_array_pointer1[10]) (int &) ) [5]
<script type="text/javascript" id="wumiiRelatedItems"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值