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

Pointers Arduino中的指针,不更新外部变量,pointers,arduino,Pointers,Arduino,不确定我做错了什么,因为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++;

不确定我做错了什么,因为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;
}
它起作用了


有关为什么
*a++
递增指针本身的解释,请参见。

问题在于指针和递增后的内容并不是您想要的

如果你写信

void someFunc(int *a, int *b) {
    *a = *a+1;
    *b = *b+1;
}
它起作用了


有关为什么
*a++
递增指针本身的解释,请参见。

问题在于指针和递增后的内容并不是您想要的

如果你写信

void someFunc(int *a, int *b) {
    *a = *a+1;
    *b = *b+1;
}
它起作用了


有关为什么
*a++
递增指针本身的解释,请参见。

问题在于指针和递增后的内容并不是您想要的

如果你写信

void someFunc(int *a, int *b) {
    *a = *a+1;
    *b = *b+1;
}
它起作用了


有关为什么
*a++
递增指针本身的说明。

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

如有疑问,请使用括号

void someFunc(int *a, int *b) 
{
    (*a)++;
    (*b)++;
}
虽然有些人说你应该这么做

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

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

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

如有疑问,请使用括号

void someFunc(int *a, int *b) 
{
    (*a)++;
    (*b)++;
}
虽然有些人说你应该这么做

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

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

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

如有疑问,请使用括号

void someFunc(int *a, int *b) 
{
    (*a)++;
    (*b)++;
}
虽然有些人说你应该这么做

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

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

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

如有疑问,请使用括号

void someFunc(int *a, int *b) 
{
    (*a)++;
    (*b)++;
}
虽然有些人说你应该这么做

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


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

您正在递增指针;而不是它们所指向的值。使用
(*a)+
*a+=1(*a)+
*a+=1(*a)+
*a+=1(*a)+
*a+=1