(1)函數指標與指標函數
(1)函數指標
一種特殊的指標,它指向函數的入口;
/** 定義一個函數指標p,只能指向傳回值為int,形參為兩個int的函數*/int (*p)(int,int);
/* * 求最大值 * 傳回值是int類型,返回兩個整數中較大的一個 */ int max(int a, int b) { return a > b ? a : b; } /* * 求最小值 * 傳回值是int類型,返回兩個整數中較小的一個 */ int min(int a, int b) { return a < b ? a : b; }int main(){ f = max; // 函數指標f指向求最大值的函數max int c = (*f)(1, 2); f = min; // 函數指標f指向求最小值的函數min c = (*f)(1, 2); }
(2)指標函數
返回指標的函數,一個函數,它的傳回值是指標;
//這是一個形參為兩個int類型,傳回值是int型指標的函數int *p(int,int);
/* * 指標函數的定義 * 傳回值是指標類型int * */ int *f(int a, int b) { int *p = (int *)malloc(sizeof(int)); memset(p, 0, sizeof(int)); *p = a + b; return p; } int main(){ int *p1 = NULL; p1 = f(1, 2); }
(2)指標數組與數組指標
(1)指標數組
//一個數組,它包含的元素是指標int* point[10];
(2)數組指標
//一個指標,它指向的是一個數組int (*point)[10];
(3)函數模板與模板函數
(1)函數模板
表示一個模板,專門用來產生函數;
template <typename T> void fun(T a) { }
(2)模板函數
是一個函數,表示由一個模板產生而來的函數;
如:fun <int> , fun <double> , fun <Shape*>等; (4)類模板與模板類
(1)類模板
表示一個模板,專門用於生產類的模板;
template <typename T> class Vector { };
(2)模板類
是一個類,表示由一個模板產生而來的類;
如:Vector<int> , Vector<double> , Vector<Shape*>等;