//
// Created by PC-Saw on 2019/1/24.
//#include <iostream>#define TEST 2/* 1. */ typedef int* (*(*fp1)(int))[10]; // 首先是一個函數指針,接受一個int型參數,返回一個指向10個int指針數組的指針
/* 2. */ typedef int (*(*fp2)(int,int,float))(int); // 首先是一個函數指針,接受三個參數,返回一個指向函數的指針,該函數接受一個int,返回int
/* 3. */ typedef int (*(*(*fp3)())[10])(); // 首先是一個函數指針,該函數沒有參數,且返回一個指向含有10個函數指針的數組,該函數不接受參數,返回int
/* 4. */ int (*(*f4())[10])(); // 首先是一個函數,返回一個指針,指向了包含10個函數指針的數組int* (*(func1)(int))[10]
{std::cout << "func1() " << std::endl;//int *(*retPtrInt)[10] = (int*(*)[10])new int*[10];int *(*retPtrInt)[10] = new int*[1][10];for (int i = 0; i < 10; ++i) {int *tmp = new int;*tmp = i;(*retPtrInt)[i] = tmp;}return retPtrInt;
}int func2(int)
{std::cout << "func2() " << std::endl;return 0;
}typedef int(*funcInt)(int);int (*func3(int,int, float))(int)
{std::cout << "func3() " << std::endl;funcInt *retPtrFunc = new funcInt;*retPtrFunc = &func2;return *retPtrFunc;
}int (*(*(func5)())[10])()
{}int main()
{#if (TEST == 0)fp1 func = &func1;for (int i = 0; i < 10; ++i) {std::cout << *(*(*func)(2))[i] << std::endl;}
#endif
#if (TEST == 1)fp2 func = &func3;(*(*func)(1,1,1.1))(1);
#endif
#if (TEST == 2)#endifreturn 0;
}
?