[Data Types] → array

Popis :

array

Pole je kolekcia premenných, ku ktorým sa pristupuje pomocou indexového čísla. Polia v programovacom jazyku C++, v ktorých sú napísané programy Arduina, môžu byť komplikované, ale používanie jednoduchých polí je relatívne jednoduché.

Všetky nižšie uvedené metódy sú platnými spôsobmi vytvorenia (deklarácie) poľa.

 // Deklarujte pole danej dĺžky bez inicializácie hodnôt:
  int myInts[6];

  // Deklarujte pole bez explicitného výberu veľkosti (kompilátor
 // spočíta prvky a vytvorí pole vhodnej veľkosti):
  int myPins[] = {2, 4, 8, 3, 6, 4};

  // Deklarujte pole danej dĺžky a inicializujte jeho hodnoty:
  int mySensVals[5] = {2, 4, -8, 3, 2};

  // Keď deklarujete pole typu char, musíte ho predĺžiť
  // o jeden prvok, ktorý bude obsahovať požadovaný ukončovací znak null:
  char message[6] = "hello";

Polia sú indexované nulou, to znamená, že podľa vyššie uvedenej inicializácie poľa je prvý prvok poľa na indexe 0,

mySensVals[0] == 2, mySensVals[1] == 4,  a tak ďalej.

Znamená to tiež, že v poli s desiatimi prvkami je index deväť posledným prvkom. Preto:

int myArray[10]={9, 3, 2, 4, 3, 2, 7, 8, 9, 11};
// myArray[9]    obsahuje 11
// myArray[10]   je neplatný a obsahuje náhodné informácie (iná adresa pamäte)

Z tohto dôvodu by ste mali byť opatrní pri prístupe k poliam. Prístup za koniec poľa (pomocou indexového čísla väčšieho ako vami deklarovaná veľkosť poľa – 1) je čítanie z pamäte, ktorá sa používa na iné účely. Čítanie z týchto miest pravdepodobne veľa nepomôže, okrem získania neplatných údajov. Zápis do náhodných pamäťových miest je určite zlý nápad a často môže viesť k nešťastným výsledkom, ako sú zlyhania alebo porucha programu. To môže byť tiež ťažko vystopovateľná chyba. Na rozdiel od BASICu alebo JAVA kompilátor C++ nekontroluje, či je prístup k poli v zákonných medziach veľkosti poľa, ktorú ste deklarovali.

mySensVals[0] = 10;

x = mySensVals[4];

S poliami sa často manipuluje vo vnútri cyklov for, kde sa počítadlo slučiek používa ako index pre každý prvok poľa. Ak chcete napríklad vytlačiť prvky poľa cez sériový port, môžete urobiť niečo takéto:

for (byte i = 0; i < 5; i = i + 1) {
  Serial.println(myPins[i]);
}


Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Nemôžete kopírovať obsah tejto stránky