如下:
目录
1.void *(*(* fp1)(int))[10];
2.float(*(* fp2)(int,int,int))(int);
3.int(*(* FP3)())[10]();
4.为什么数组名作为参数,会改变数组的内容,而其它类型如int却不会改变变量的值?
分别表示什么意思?
【标准答案】
1.void *(*(* fp1)(int))[10];
FP1是一个指针,指向一个函数,这个函数的参数为??int型,函数的返回值是一个指针,这个指针指向一个数组,
这个数组有10个元素,每个元素是一个无效*型指针。
2.float(*(* fp2)(int,int,int))(int);
FP是一个指针,指向一个函数,这个函数的参数为??三个int型,函数的返回值是一个指针,这个指针指向一个函数,
这个函数的参数为??INT型函数的返回值为浮点型。
3.int(*(* FP3)())[10]();
fp3是一个指针,指向一个函数,这个函数的参为空,函数的返回值是一个元素,每个元素是一个指针,指向一个数组,这个函数的参数为??空。函数的返回值是int型。
4.为什么数组名作为参数,会改变数组的内容,而其它类型如int却不会改变变量的值?
【参考答案】 当数组名作为参数时,传递的实际上是地址。而其他类型如int作为参数时,
由于函数参数值实质上是实参的一份拷贝,被调函数内部对形参的改变并不影响实参的值。