簡體   English   中英

無法理解C函數調用

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

使其更清楚。

這是一個varargs函數 ,可以接收可變數量的參數(類似於printf )。 您給出的第二行是賦值,而不是函數調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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