繁体   English   中英

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++;
}

问题是指针和后增量不能满足您的要求。

如果你写

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

有用

在C中的取消引用指针上看到++? 解释为什么*a++增加指针本身。

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

如有疑问,请使用括号。

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

虽然有人说你应该做

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

由于后增量技术上会返回一个值,而前增量只会增量。 在这种情况下,大多数编译器将生成相同的代码。 我从没看过AVR编译器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM