相关疑难解决方法(0)

C中的函数指针如何工作?

我最近在C中使用了函数指针.

继续回答你自己的问题的传统,我决定对那些需要快速深入研究这个主题的人进行一些基本的总结.

c function-pointers

1170
推荐指数
10
解决办法
77万
查看次数

什么是跳台?

有人可以解释跳转表的机制,为什么在嵌入式系统中需要它?

c c++ memory embedded

49
推荐指数
3
解决办法
3万
查看次数

什么是函数指针的使用?

可能重复:
函数指针有什么意义?

我试图了解在实际场景中使用函数指针的位置.也有人可以给我一个实际的例子,我们必须将函数本身作为参数传递给另一个函数.

c

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

为什么使用函数名作为函数指针等效于将address-of运算符应用于函数名?

有趣的是,将函数名称用作函数指针等同于将address-of运算符应用于函数名称!

这是一个例子.

typedef bool (*FunType)(int);
bool f(int);
int main() {
  FunType a = f;
  FunType b = &a; // Sure, here's an error.
  FunType c = &f; // This is not an error, though. 
                  // It's equivalent to the statement without "&".
                  // So we have c equals a.
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用这个名称是我们在数组中已经知道的.但是你不能写出类似的东西

int a[2];
int * b = &a; // Error!
Run Code Online (Sandbox Code Playgroud)

这似乎与该语言的其他部分不一致.这个设计的基本原理是什么?

这个问题解释了这种行为的语义及其工作原理.但是我对这种语言设计的原因很感兴趣.

更有趣的是,当用作参数时,函数类型可以隐式转换为指向自身的指针,但在用作返回类型时不会转换为指向自身的指针!

例:

typedef bool FunctionType(int);
void g(FunctionType); // Implicitly converted to void g(FunctionType …
Run Code Online (Sandbox Code Playgroud)

c++ syntax function-pointers

16
推荐指数
2
解决办法
6040
查看次数

什么是函数指针,我将如何使用它们?

我明白我可以使用指针来实现功能.

有人可以解释为什么会使用它们,以及如何使用它们?简短的示例代码对我很有帮助.

c pointers function-pointers

14
推荐指数
3
解决办法
2万
查看次数

在C++中使用回调是否会增加耦合?

Q1.为什么使用回调函数?

Q2.回调是邪恶的吗?对于那些知道,对他人来说是噩梦的人来说,这很有趣.

Q3.回调的替代方案?

c++ oop callback

3
推荐指数
1
解决办法
3047
查看次数

如何在函数中传递函数?

这是一个奇怪的头衔.如果有人能澄清我究竟是在问什么,我会非常感激,因为我不太确定自己.

我正在观看关于编程范式的斯坦福视频(那位老师很棒),当他开始这样做的时候,我正在观看视频:

void *lSearch( void* key, void* base, int elemSize, int n, int (*cmpFn)(void*, void*))
Run Code Online (Sandbox Code Playgroud)

当然,我心想,"我,我不知道你可以宣布一个功能并在以后定义它!".所以我创建了自己的C++测试版.

int foo(int (*bar)(void*, void*));
int bar(void* a, void* b);

int main(int argc, char** argv)
{
    int *func = 0;
    foo(bar);

    cin.get();
    return 0;
}

int foo(int (*bar)(void*, void*))
{
    int c(10), d(15);
    int *a = &c;
    int *b = &d;
    bar(a, b);
    return 0;
}

int bar(void* a, void* b)
{
    cout << "Why hello there." << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

关于代码的问题是这样的:如果我将函数声明int *bar …

c++ pointers

3
推荐指数
1
解决办法
693
查看次数

我们在哪里可以使用C中的函数指针,什么用于函数指针

就在最近,我在接受采访时被问到:我们在哪里可以使用C中的函数指针?什么函数指针返回.我说使用我们可以使用函数指针调用函数然后他问了一些例子,但我不能满足于他更多的例子.然后他问我什么函数指针返回.我告诉他这取决于函数指针的声明.

但我真的想知道C中函数指针的一些用法.

c

3
推荐指数
1
解决办法
1889
查看次数

使用指针功能有什么好处?

使用函数指针而不是函数本身的真正好处是什么?它会使执行更快吗?或者当它传递给另一个函数时它是否提供了便利?

c++ function-pointers visual-c++

3
推荐指数
1
解决办法
4666
查看次数

什么是 void (*op)(T &amp;) 和 void (*op)(T &amp;, void *)?

我有一个关于链表和模板的作业,其中有一些带有奇怪参数的函数是强制性的。我找不到有关它的在线文档,并且感谢任何提供的材料。

我尝试为 op 分配另一个地址,然后它编译得很好,但我无法调用它。

template <class T> struct L1Item {
  T data;
  L1Item<T> *pNext;
  L1Item() : pNext(NULL) {}
  L1Item(T &a) : data(a), pNext(NULL) {}
};

template <class T> class L1List {
  L1Item<T> *_pHead; // The head pointer of linked list
  size_t _size;      // number of elements in this list
public:
  void traverse(void (*op)(T &)) {
    // TODO: Your code goes here
  }
  void traverse(void (*op)(T &, void *), void *pParam) {
    // TODO: Your code goes here
    //    string *Req …
Run Code Online (Sandbox Code Playgroud)

c++ parameters templates linked-list

3
推荐指数
1
解决办法
503
查看次数

用C++设计前端/后端系统?

我即将用C++编写程序,但我不确定如何去做.我想创建一个程序,可以与命令行前端一起使用,但也可以使用GUI前端,因为我不想将用户绑定到特定的接口,例如依赖项的小部件工具包.

怎么做最好的方法呢?我知道像RSync和SSH这样的程序在GUI中有前端,但我不确定如何做到这一点.拥有一个只使用system()来运行它的程序,同时拥有一个漂亮的GUI,这不是很麻烦吗?

c++ user-interface frontend backend

2
推荐指数
2
解决办法
4230
查看次数

在C中使用函数指针是否有效?

函数指针是否会影响程序的运行时间?

int (*fptr1)(int);

int square(int num) {
    return num*num;
}

int main()
{
    int n = 5;
    fptr1 = square;
    printf("%d squared is %d\n",n, fptr1(n));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c function-pointers

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