簡體   English   中英

typedef int(* pf)需要解釋

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM