Thinking in C++遇到的函数指针及应用
生活随笔
收集整理的這篇文章主要介紹了
Thinking in C++遇到的函数指针及应用
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
//
// Created by PC-Saw on 2019/1/24.
//#include <iostream>#define TEST 2/* 1. */ typedef int* (*(*fp1)(int))[10]; // 首先是一個(gè)函數(shù)指針,接受一個(gè)int型參數(shù),返回一個(gè)指向10個(gè)int指針數(shù)組的指針
/* 2. */ typedef int (*(*fp2)(int,int,float))(int); // 首先是一個(gè)函數(shù)指針,接受三個(gè)參數(shù),返回一個(gè)指向函數(shù)的指針,該函數(shù)接受一個(gè)int,返回int
/* 3. */ typedef int (*(*(*fp3)())[10])(); // 首先是一個(gè)函數(shù)指針,該函數(shù)沒有參數(shù),且返回一個(gè)指向含有10個(gè)函數(shù)指針的數(shù)組,該函數(shù)不接受參數(shù),返回int
/* 4. */ int (*(*f4())[10])(); // 首先是一個(gè)函數(shù),返回一個(gè)指針,指向了包含10個(gè)函數(shù)指針的數(shù)組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;
}
?
總結(jié)
以上是生活随笔為你收集整理的Thinking in C++遇到的函数指针及应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java时间api_什么是java时间A
- 下一篇: Java写入磁盘阵列_月光软件站 - 编