解释起来有点乏味,但我会尝试的。我有一个函数,它将地址作为输入。然后,与其先保存变量,以便我可以将该变量的地址传递给函数,不如直接输入函数作为参数。有没有办法做到这一点?
像这样:
#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;
}
因为它采用临时值的地址。