Arduino 本体のメモリ容量は小さいです。後で記します。このためにポインタの理解が必要なことがあります。ポインタの動作を少しだけ理解しましょう。下の図のようにプログラムを貼り付けます。
void setup() {
Serial.begin(9600); //9600bpsでシリアルポートを開く
}
void loop() {
int A = 1, B = 0; //[1] int型変数A,Bを宣言してそれぞれ1,0を格納
int *P1, *P2; //[2] ポインタ変数の宣言の仕方その1(参考)
int* P[] = {NULL, NULL}; //[3] ポインタ変数の宣言の仕方その2(以下使用)
P[0] = &A; //[4] int型変数Aの前に"&"を付けるとAのアドレスを返しポインタ変数P[0]に格納
Serial.println((int)P[0]); //[5] ポインタ変数P[0]に格納されたアドレスをシリアル出力可能なint型にして出力
P[1] = P[0]; //[6] ポインタ変数P[0]のアドレスをポインタ変数P[1]にコピー可能
Serial.println(A); //[7] int型変数Aをシリアル出力
*P[1] = 2; //[8] P[1]の住所の中身を2に設定
Serial.println(A); //[9] int型変数Aをシリアル出力
B = *P[1] + 1; //[10] 変数BにP[1]の住所の中身に1を足した数を格納
Serial.println(B); //[11] int型変数Bをシリアル出力
delay(3000); //[12] 3秒待つ
}
出力に関しては、次のように解釈できます。
Arduino UNO R3のメモリ容量は、プログラム保存用のFlashメモリが32KB(うち0.5KBはブートローダー使用)、実行時データ保持用のSRAM(メインメモリ)が2KB、電源OFFでもデータが消えないEEPROMが1KBです。