我正试图摆脱C ++中的指针和地址的束缚,并且在更改参数的函数上遇到麻烦。
下面的代码正在无限循环中写入recentLocations
,而不是递增值didSet
。
我的问题是:这里的代码有什么问题?
NSPopUpButton
答案 0 :(得分:8)
您正在递增指针本身的副本,而不是指针指向的副本。您可能是说:
(*foo)++;
尽管您无法阻止无限循环,但这仍然无法解决无限循环。
答案 1 :(得分:5)
您的问题是您要增加指针,而不是指向的数据。
替换
var total = 0;
var array = [];
function totalSpent() {
var spent = document.getElementById("moneySpent").value;
// check if the entered value is number
if (isNaN(Number(spent))) {
alert("Numbers only");
} else {
var spent = parseFloat(document.getElementById("moneySpent").value);
array.push(spent);
total += spent;
document.getElementById('youSpent').innerHTML=`Total Spent Today: ${total}`;
}
}
与
foo++
增加指向的值。
答案 2 :(得分:1)
如果我正确理解了您要执行的操作,则应按照演示程序中所示的以下方式声明该函数
#include <iostream>
void Statement(int *foo) {
std::cout << "Loop run #" << *foo << ". ";
++*foo;
}
int main() {
int foo = 1;
for (; ; ) {
Statement(&foo);
}
}
那是在无限循环中,您尝试输出递增的foo
值。
在这种情况下,您需要递增指针本身所指向的值,例如
++*foo
如果要限制循环迭代次数,则可以使用例如unsigned char类型的对象并按以下方式定义循环
#include <iostream>
void Statement( unsigned char *foo) {
std::cout << "Loop run #" << int( *foo ) << ". ";
++*foo;
}
int main() {
unsigned char foo = 1;
for (; foo ; ) {
Statement(&foo);
}
}