如果我有一个将指针变量作为输入的函数,有没有办法将函数作为参数传递



解释起来有点乏味,但我会尝试的。我有一个函数,它将地址作为输入。然后,与其先保存变量,以便我可以将该变量的地址传递给函数,不如直接输入函数作为参数。有没有办法做到这一点?

像这样:

#include <iostream>
#include "main.h"
using namespace std;
int main()
{
    printFunction(returnOne());
   return 0;
}
void printFunction(int *a) {
    cout << a << endl;
}
int returnOne() {
    return 1;
}

好吧,显然returnOne()与传入有关返回类型的void printFunction(int*)不匹配,它应该是这样的:

int* returnOne() {
    static int one = 1;
    return &one;
}

int* returnOne() {
    return new int(1);
}

另一种选择是采用这样的结果地址

printFunction(&returnOne());
           // ^

但这会产生未定义的行为,例如

int returnOne() {
    return 1;
}

因为它采用临时值的地址。

最新更新