[英]typedef int (*pf) needs explaining
通常,我們使用typedef
來獲取數據類型的備用名稱。 例如 -
typedef long int li; // li can be used now in place of long int
但是,下面的typedef做了什么?
typedef int (*pf) (int, int);
typedef int (*pf) (int, int);
這意味着使用pf
類型聲明的變量是指向函數的指針,該函數接受兩個int
參數並返回一個int
。
換句話說,你可以這樣做:
#include <stdio.h>
typedef int (*pf)(int,int);
int addUp (int a, int b) { return a + b; }
int main(void) {
pf xyzzy = addUp;
printf ("%d\n", xyzzy (19, 23));
return 0;
}
typedef long int li;
指定備用名稱li
以鍵入long int
。
以完全相同的方式
typedef int (*pf) (int, int);
將替代名稱pf
指定為int (*) (int, int)
。 這就是它的全部。
您可能已經注意到, typedef
聲明遵循與變量聲明相同的語法。 唯一的區別是新變量名稱被新類型名稱替換。 因此,根據C聲明語法,當涉及數組或函數類型時,聲明的名稱可能出現在聲明符的“中間”。
再舉一個例子
typedef int A[10];
聲明A
作為int [10]
類型的替代名稱。 在此示例中,新名稱也出現在聲明的“中間”。
它是一個函數指針原型。 然后,您可以將函數聲明為參數,如下所示:
void RegisterCallback(pf your_callback_func);
然后你可以調用作為func ptr傳遞的函數:
...
your_callback_func(i, j);
...
typedef
的名稱為pf
,它用於一個函數指針,它將兩個整數作為參數並返回一個整數。
typedef
作用如下:
使用known types
定義unknown type
known types
。
所以它定義了兩個int參數並返回int的函數類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.