typedef struct Stack_t* Stack;
typedef void* Element;
typedef Element (*CopyFunction)(Element);
typedef void (*FreeFunction)(Element);
你能解釋一下第三行的含義嗎?
感謝c中的實現通用堆棧
typedef struct Stack_t* Stack;
typedef void* Element;
typedef Element (*CopyFunction)(Element);
typedef void (*FreeFunction)(Element);
你能解釋一下第三行的含義嗎?
感謝c中的實現通用堆棧
一個類似的性質的例子,以幫助您理解,函數指針的typedef。
typedef int (*intfunctionpointer_t) (int);
,所以我們在這裏說的是什麼,intfunctionpointer_t是一種類型的函數指針,函數int類型的單個參數,並返回一個整數。
假設你有兩個功能說,
int foo (int);
int bar (int);
然後,
intfunctionpointer_t function = foo;
function(5);
調用函數(5),最終會調用foo(5);
您也可以通過將相同的函數指針分配給同一個簽名的另一個函數來擴展它。
function = bar;
function(7);
現在調用函數(7),最終會調用bar(7);
此:
typedef Element (*CopyFunction)(Element);
定義的別名稱爲CopyFunction
一個函數指針類型,用函數返回一個Element
的實例,並具有Element
一個參數。
人爲的例子:
/* Function declaration. */
Element f1(Element e);
Element f2(Element e);
Element e = { /* ... */ };
CopyFunction cf = f1;
cf(e); /* Invokes f1(). */
cf = f2;
cf(e); /* Invokes f2(). */
的函數指針使用其他例如:
這是一個function pointer
你可以解決一個函數來取一個Element
並返回一個Element
,像
Element ReturnElem(Element el){ } //define function
CopyFunction = ReturnElem; //assign to function pointer
Element el = ....;
Element el2 = CopyFunction(el); //call function using function-pointer
參見here爲函數指針。