Açıklama
Dizi, bir dizin numarasıyla erişilen bir değişkenler topluluğudur. C ++ programlama dilindeki diziler Arduino çizimlerinin yazıldığı karmaşık olabilir, ancak basit diziler kullanmak nispeten basittir.
Dizi Oluşturma (Bildirme)
Aşağıdaki yöntemlerin tümü, bir dizi oluşturmak (bildirmek) için geçerli yöntemlerdir.
int myInts[6];
int myPins[] = {2, 4, 8, 3, 6};
int mySensVals[6] = {2, 4, -8, 3, 2};
char message[6] = "hello";
Bir diziyi myInts'te olduğu gibi başlatmadan bildirebilirsiniz.
MyPins'te, açıkça bir boyut seçmeden bir dizi bildiririz. Derleyici öğeleri sayar ve uygun boyutta bir dizi oluşturur.
Son olarak, mySensVals gibi dizinizi başlatabilir ve boyutlandırabilirsiniz. Char türünde bir dizi bildirirken, gerekli null karakteri tutmak için başlatma işleminizden bir öğe daha gerektiğini unutmayın.
Bir Diziye Erişim
Diziler sıfır endekslidir, yani yukarıdaki dizi başlatma değerine bakıldığında dizinin ilk öğesi 0 dizinindedir, dolayısıyla
mySensVals[0] == 2, mySensVals[1] == 4,
vb.
Ayrıca, on öğeli bir dizide, dokuzuncu dizinin son öğe olduğu anlamına gelir. Dolayısıyla:
int myArray[10]={9, 3, 2, 4, 3, 2, 7, 8, 9, 11}; // myArray[9] contains 11 // myArray[10] is invalid and contains random information (other memory address)
Bu nedenle dizilere erişirken dikkatli olmalısınız. Bir dizinin sonuna erişme (bildirilen dizi boyutunuzdan daha büyük bir dizin numarası kullanarak - 1) başka amaçlar için kullanılan bellekten okuyor. Bu konumlardan okumak, verim geçersiz verileri dışında muhtemelen pek bir şey yapmaz. Rastgele bellek konumlarına yazmak kesinlikle kötü bir fikirdir ve genellikle çökmeler veya program arızası gibi mutsuz sonuçlara yol açabilir. Bu ayrıca izlenmesi zor bir hata olabilir.
BASIC veya JAVA'dan farklı olarak, C ++ derleyicisi dizi erişiminin bildirdiğiniz dizi boyutunun yasal sınırları içinde olup olmadığını kontrol etmez.
Bir diziye değer atamak için:
mySensVals[0] = 10;
Bir diziden bir değer almak için:
x = mySensVals[4];
Diziler ve FOR Döngüler
Diziler genellikle döngü sayacının her dizi öğesi için dizin olarak kullanıldığı döngüler için manipüle edilir. Örneğin, bir dizinin öğelerini seri bağlantı noktası üzerinden yazdırmak için şöyle bir şey yapabilirsiniz:
for (byte i = 0; i < 5; i = i + 1) { Serial.println(myPins[i]); }