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