2011-05-05 78 views
0

我嘗試寫一個函數,即:va_list的訪問第二個參數

int solve(double* x, double xA, double xB, double zeps, 
      double funct(double x, double*), ...) 

這裏,「本功能」是作爲參數傳遞的另一個功能。現在我想用va_list來訪問這個函數的第二個參數'funct'這是一個double*。所以,我做的:

va_list point_arg ; 
va_start (point_arg , funct) ; 
double pp = va_arg (point_arg , double ); 
double * pp = va_arg (point_arg , double *); 

看來,據我瞭解,我用第va_arg成功找到函數「本功能」,這是一個雙重的第一個參數。但是,va_arg的第二次使用未能獲得正確的指向double(第二個參數)的指針。你知道這是否可能,如果不是如何做到這一點?

回答

0

函數不使用省略號,你不能在其上應用va_list函數。

1

你誤會了函數指針的工作方式。函數指針是存儲函數時指向內存中位置的指針,它不包含有關該函數參數的任何信息。您在調用函數指針時必須自己提供參數給函數。

因此,您不能訪問funct指針的參數,因爲這些參數尚不存在。它們只有在調用了指向do函數時纔會存在,這大概會發生在代碼中。