运行以下代码,它打印出57 57,我需要的是56 57.我知道这是因为指针指向同一位置,但我该如何避免这种情况?
int (*spriteArray[10])[8][8];
int i = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
someOtherMethod();
i++;
someOtherMethod();
someMethod();
delay(100000);
}
void someOtherMethod()
{
int sprite[8][8];
spriteArray[i]= &sprite;
sprite[0][0] = 56+i;
}
void someMethod()
{
Serial.println(*spriteArray[0][0][0]);
Serial.println(*spriteArray[1][0][0]);
}
答案 0 :(得分:8)
在someOtherMethod
中存储指向局部变量的指针,该指针在函数返回后无效。取消引用此指针会导致未定义的行为。