21xrx.com
2024-09-19 09:38:28 Thursday
登录
文章检索 我的文章 写文章
能否在C++中以函数地址作为返回值使用return 0呢?
2023-07-02 20:38:28 深夜i     --     --
C++ 函数地址 返回值 return 0

在C++中,函数地址可以作为返回值使用。但是,要注意的是,如果将函数地址作为返回值使用,则需要将返回值类型设置为指向函数的指针类型。

在C++中,函数名本身就是一个指向函数的指针。因此,可以直接将函数名作为返回值使用,例如:


#include <iostream>

using namespace std;

int add(int a, int b)

{

  return a + b;

}

int (* getAddPtr())(int, int)

  return add;

int main()

{

  int (*pAdd)(int, int);

  pAdd = getAddPtr();

  cout << pAdd(1, 2) << endl;

  return 0;

}

上述代码中,`getAddPtr` 函数返回指向 `add` 函数的指针。

需要注意的是,在返回函数地址时,函数名后面的括号不能省略。如果省略了,就失去了返回函数地址的本意。比如下面的例子:


#include <iostream>

using namespace std;

int add(int a, int b)

{

  return a + b;

}

int* getAddPtr()

{

  return add; // 错误:返回的是 int 类型的值,而非指针

}

int main()

{

  int *pAdd;

  pAdd = getAddPtr();

  cout << *pAdd(1, 2) << endl;

  return 0;

}

上述代码中,`getAddPtr` 函数返回了 `add` 函数的地址,但是返回类型设置为 `int*`,所以 `getAddPtr` 函数返回的是 `add` 函数的返回值,而不是指向 `add` 函数的指针。

因此,要正确地将函数地址作为返回值使用,需要将返回值类型设置为指向函数的指针类型,而且不能省略函数名后面的括号。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复