gpt4 book ai didi

c++ - Va_list 访问第二个参数

转载 作者:行者123 更新时间:2023-11-28 08:20:49 25 4
gpt4 key购买 nike

我试着写一个这样的函数:

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

这里,'funct' 是作为参数传递的另一个函数。现在我想使用 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 成功地找到了函数“funct”的第一个参数,它是一个 double 参数。但是,第二次使用 va_arg 未能获得指向 double(第二个参数)的正确指针。您知道这是否可行吗?如果不可能,该怎么做?

最佳答案

您误解了函数指针的工作方式。函数指针是函数存储时指向内存中位置的指针,它不包含有关该函数参数的任何信息。调用函数指针时,您必须自己向函数提供参数。

因此您无法访问 funct 指针的参数,因为这些参数尚不存在。它们只会在 pointed-do 函数被调用时存在,这可能会发生在您的代码中。

关于c++ - Va_list 访问第二个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com