函数内部的函数,不带括号
Function inside a function without parentheses?
有这样的C代码:
*(*(A+i)+j) = aaa(*bbb,0,PI)/(16*PI);
aaa是一个函数,BBB是另一个函数:
double bbb(double x, double y)
{
int i,j,k,l,m,n;
*(K+1)=sin(x)*cos(y);
*(K+2)=sin(x)*sin(y);
*(K+3)=cos(x);
...
...
我的问题是,当bbb在函数aaa中被调用时,bbb后面没有任何括号,也就是说,没有变量传递到函数bbb中。那么函数bbb中x和y的值是多少?两个零?
好了,这是一个很长的代码的一部分:
*(*(A+i)+j) = aaa(*bbb,0,PI)/(16*PI);
aaa及相关功能:
double aaa(double (*func)(double, double), double x1, double x2)
{
double qgaus(double (*func)(double), double a, double b);
double f1(double x);
nrfunc=func;
return qgaus(f1,x1,x2);
}
double f1(double x)
{
double qgaus(double (*func)(double), double a, double b);
double f2(double y);
double yy1(double),yy2(double);
xsav=x;
return qgaus(f2,yy1(x),yy2(x));
}
double f2(double y)
{
return (*nrfunc)(xsav,y);
函数bbb中的大写变量K是main()中定义的全局变量。
我只是想知道传递给函数bbb的x和y值是多少
很可能(假设代码可以编译)aaa
是一个函数,它的第一个参数是指向函数的指针。如果解引用指向函数的指针,调用仍然有效。因此,在您的情况下,*b
只是衰减到一个函数指针,这可能是在aaa
(其中的定义,你不提供)内使用。简单的例子:
#include <iostream>
void f(int x)
{
std::cout << "void f(int) invoked, with x = " << x << std::endl;
}
void a(void (*fptr)(int), int x)
{
fptr(x); // call the function pointed by fptr with argument x
}
int main()
{
a(f, 10);
a(*f, 20); // same as above
a(****f, 42); // still the same
}
所以在你的代码中,你首先传递给函数的指针,然后是函数的参数,然后在通过指向函数的指针调用函数时使用。
相关文章:
- 在函数内部的声明中初始化数组,并在外部使用它
- 使用C链接在函数内部创建C++模板
- 指针没有更新它在void函数内部指向的值
- SDL_PollEvent() 无法捕获类函数内部SDL_QUIT?
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- WriteProcessMemory 在函数内部失败
- 如何在C++中传递lambda函数内部的对象实例
- 在析构函数内部处理异常(但不抛出)
- 在函数内部传递字符 *str
- 仅在函数内部构建对象时EXC_BAD_ACCESS
- 是否可以使用类的析构函数内部函数来重置值?
- 如何在函数内部使用 zmq(以非阻塞方式)在客户端请求时获取函数的状态?
- 在函数内部错误定位后,从函数中释放返回的指针会导致芯片崩溃
- 我如何从循环内部使用迭代器的函数内部的getter中检索特定的成员
- C++ 修改函数内部的字符
- 从对象成员函数内部删除操作的技术 /设计模式
- C++14 使用捕获说明符递增 lambda 函数内部的值
- 在成员函数内部调用成员函数
- 如何在类构造函数内部对同一类的成员函数启动pthread
- Arduino C++:F()宏在函数内部有意义吗