如何在C ++函数中正确使用指针?

时间:2019-06-28 15:26:47

标签: c++ loops for-loop pointers pre-increment

我正试图摆脱C ++中的指针和地址的束缚,并且在更改参数的函数上遇到麻烦。

下面的代码正在无限循环中写入recentLocations,而不是递增值didSet

我的问题是:这里的代码有什么问题?

NSPopUpButton

3 个答案:

答案 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);
    }
}