0

次のコードを実行すると、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]); 

}
4

1 に答える 1

8

ローカル変数へのポインターを格納すると、そのsomeOtherMethodポインターは関数が戻った後に無効になります。このポインターを逆参照すると、未定義の動作が発生します。

于 2013-03-11T13:05:21.927 に答える