#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 = ∥
j += 10;
return **j;
}
此代码有什么问题,输出是垃圾值.. 如何返回指向指针的指针,或者如何在不使用指向指针的情况下优化此cde
答案 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);
}
您也可以使用指针执行此操作,但您必须使用不必要的解除引用运算符。