C ++:如何从函数返回指针到指针?

时间:2016-05-16 14:03:33

标签: c++ function pointers

#include <iostream>
#include <cstdlib>
using namespace std;
int **j;
int Alter(int *par);
int main()
{
  static int a = 10;
  a = Alter(&a);
  std::cout << "a : " << a << std::endl;
  return 0;
}
int Alter(int *par)
{
  int **j = &par;
  j += 10;
  return **j;
}

此代码有什么问题,输出是垃圾值.. 如何返回指向指针的指针,或者如何在不使用指向指针的情况下优化此cde

2 个答案:

答案 0 :(得分:5)

如果您希望onFrameLoad:webview.mainFrame.DOMDocument.body.offsetHeight变量增加10,则需要取消引用其中的webview.mainFrame.DOMDocument.documentElement.boundingBox.size.height

Alter

或代替指针指针,使用引用:

a

但是你不需要j中的作业。

答案 1 :(得分:5)

撇开j += 10递增指针而不是值(这可能不是你想要做的)这一事实,主要错误是,传递给函数的指针传递给无论如何

这意味着int *j = &par产生传递给Alter函数的堆栈上的指针参数的地址,而不是传递的变量的地址。

您需要做的是仅传递对变量的引用并直接修改它:

int Alter(int& par) {
  par += 10;
  return par;
} 

int main() {
  static int a = 10;
  Alter(a);
}

您也可以使用指针执行此操作,但您必须使用不必要的解除引用运算符。