[英]Unable to understand C function call
我有一個定義的功能:
int foobar(char *ptr,...)
函數調用如下:
int (*fooptr) (char *,...) = foobar;
我無法理解該函數的調用方式...預先感謝
那不是函數調用。
它聲明了一個名為fooptr
的函數指針變量,該變量保存該函數的地址。
要通過指針調用該函數,您可以執行例如:
int return_value = (*fooptr)(char_ptr, x, y, z);
這不是電話。 這是fooptr
的聲明 。
您發布的代碼未調用該函數。 第一行是函數聲明,第二行是創建指向它的指針。 要調用它,必須使用foobar(myCharPtr[, other arguments])
或fooptr(myCharPtr[, other arguments])
。
在您的示例中未調用該函數。 它的地址存儲在fooptr
變量中,該變量是一個函數指針。 如果稍后在該函數指針仍指向foobar
函數時調用該函數指針,它將調用foobar
函數。
您可以將第二行寫為:
// declare fooptr as a variable of type function pointer
// taking (char*,...) and returning int
int (*fooptr) (char *,...);
// take the address of foobar function and assign it to fooptr
fooptr = &foobar;
使其更清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.