相关疑难解决方法(0)

Typedef函数指针?

我正在学习如何动态加载DLL,但我不明白的是这一行

typedef void (*FunctionFunc)();
Run Code Online (Sandbox Code Playgroud)

我有几个问题.如果有人能够回答他们,我将不胜感激.

  1. 为什么typedef用?
  2. 语法看起来很奇怪; 之后void应该有不是一个函数名还是什么?它看起来像一个匿名函数.
  3. 是否创建了一个函数指针来存储函数的内存地址?

所以我此刻很困惑; 你能为我澄清一下吗?

c c++ pointers typedef

428
推荐指数
5
解决办法
38万
查看次数

通过函数指针调用C++类方法

如何获取类成员函数的函数指针,然后使用特定对象调用该成员函数?我想写:

class Dog : Animal
{
    Dog ();
    void bark ();
}

…
Dog* pDog = new Dog ();
BarkFunction pBark = &Dog::bark;
(*pBark) (pDog);
…
Run Code Online (Sandbox Code Playgroud)

另外,如果可能的话,我也想通过指针调用构造函数:

NewAnimalFunction pNew = &Dog::Dog;
Animal* pAnimal = (*pNew)();    
Run Code Online (Sandbox Code Playgroud)

这是可能的,如果是这样,那么首选的方法是什么?

c++ function-pointers class-method

105
推荐指数
8
解决办法
26万
查看次数

如何使函数返回指向函数的指针?(C++)

我正在尝试创建一个带字符的函数,然后根据字符的内容返回一个指向函数的指针.我只是不确定如何使函数返回指向函数的指针.

c++ function-pointers return-value

64
推荐指数
7
解决办法
6万
查看次数

C 中函数指针的正确语法使用

我已经阅读了有关函数指针语法的内容,但无法在我的代码中工作。

该视频解释了语法是:

type func0(type0 arg0, ..., typen argn){
    // do something
    return a_thing;
}
Run Code Online (Sandbox Code Playgroud)

然后在另一个函数中传递函数指针是:

type func1((*func0)(type0 arg0, ..., typen argn), another args){  
    //do something
    func0(arg0, ..., argn);    
    return a_thing;
}
Run Code Online (Sandbox Code Playgroud)

但是后来,我读了第一个关于C 中的函数指针如何工作?,语法为:

type func1((*func0)(type0 arg0, ..., typen argn), another args) {    
    //do something
    (*func0)(arg0, ..., argn);
    return a_thing;
}
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为您正在取消引用您正在传递的指针。最后, C 函数指针调用语法中的第一个答案解释了该语法可以是:

&func
func
*func
**func
Run Code Online (Sandbox Code Playgroud)

我不明白哪些信息是正确的。我有代码:

double *func1((*func0)(double), double *var) {
    double *temp = malloc(some_size);
    for(int i = 0; i < some_cycles; ++i) …
Run Code Online (Sandbox Code Playgroud)

c function-pointers

5
推荐指数
1
解决办法
217
查看次数