[英]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.