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

时间:2015-04-26 14:58:54

标签: pointers arduino

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

public void display(GLAutoDrawable gLDrawable){

    // reset view matrix, needed?

    // Calculate the model view projection matrix .. where does model matrix get it's values from?

    // translate to Square1's position?
    // rotate to Square1's angle?
    // draw Square1 .. passing MVP matrix

    // translate to Square2's position?
    // rotate to Square2's angle?
    // draw Square2 .. passing MVP matrix
}

2 个答案:

答案 0 :(得分:3)

问题是指针和后增量不能达到你想要的效果。

如果你写

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

它有效

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

答案 1 :(得分:0)

someFunc中的变量a和b是副本,并且您正在递增副本。 后增量的优先顺序高于指针去引用,因此您将增加指针的副本。取消参考没有效果。

如有疑问,请使用括号。

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

虽然有些人说你要做什么

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

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