Arduino 中的指针,不更新外部变量

Pointers in Arduino, not updating outside variable

不确定我做错了什么,因为 aValue 和 bValue 没有更新。

int aValue;
int bValue;

void setup() {
    aValue = 0;
    bValue = 0;
}

void loop() {
    someFunc(&aValue, &bValue);
    // code for printing aValue and bValue
}

void someFunc(int *a, int *b) {
    *a++;
    *b++;
}

问题是指针和 post-increment 不符合您的要求。

如果你写

void someFunc(int *a, int *b) {
    *a = *a+1;
    *b = *b+1;
}

有效

++ on a dereferenced pointer in C? 解释为什么 *a++ 增加指针本身。

someFunc 中的变量 a 和 b 是副本,您正在递增副本。 post 增量的优先顺序高于指针取消引用,因此您正在增加指针的副本。取消引用无效。

如有疑问,请使用括号。

void someFunc(int *a, int *b) 
{
    (*a)++;
    (*b)++;
}

尽管有些人说你应该这样做

void someFunc(int *a, int *b) 
{
    ++(*a);
    ++(*b);
}

因为 post 在技术上递增 returns 一个值,而预递增只是递增。在这种情况下,大多数编译器会生成相同的代码。我从来没有看过AVR编译器。