Frage zu Arrays

Ist es korrekt, wenn ich ein Array als int definiere, dass dann alle Werte automatisch als int ausgelesen werden (also 2 Byte?)

Oder muss ich das speziell irgendwie aus 2 Byte die gelesen werden zusammenfügen?

Beispiel:

int Array [5];

Array[3] = 1024;

Variable = Array[3];

Steht dann auch tatsächlich 1024 in der variable, wie ich vermute?
Will nur sicher gehen, dass ich keinen Denkfehler mache, denn bei den EEProm-Funktionen wird ja immer nur ein Byte gelesen, das ist hier aber nicht so, weil ich es ja als int definiert hatte oder?

Ja und auch bei den EEPROM geht es anders, wenn man die richtigen Funktionen verwendet.

Gruß Tommy

TO: bitte lies dir unbedingt EERPOM.put und EEPROM.get durch!

Ja, das hatte ich schon mitbekomen, da brauche ich aber nur Byte, weil ich Platz sparen will.
Mir ging es nur ums Array um sicher zu gehen, dass ich keinen Denkfehler mache, da ich gerade alles umprogrammiere.

Noch ne Frage..... Ich habe ein Array in dem ich Adressen speichern will.
Nun will ich die Startadresse auf den Wert setzen der vorgegeben ist, allerdings bekomme ich: "assigning to an array from an initializer list"

const int AnzSensors = 2;
int SensAddresses [AnzSensors][2];

im Setup:

  for(int i = 0; i < AnzSensors; i++) {                  
    SensAddresses[i] = {DataAddress,DataAddress};
  }

Was mache ich falsch?

Wenn ich folgendes mache:
 SensAddresses[i][0] = {DataAddress, DataAddress};
kommt: "cannot convert '' to 'int' in assignment"

Diese Variante kompiliert, aber ist das auch korrekt?

SensAddresses[i][0] = DataAddress, DataAddress;

Ich meine steht dann auch die definierte Variable in beiden Feldern?

Gib uns nicht nur Fragmente, sondern kompilierfähigen Code.
Wie willst Du in 1 Feld 2 Werte eintragen? Die {}-Schreibweise ist nur in der Deklarationszeile erlaubt.
Welchen Sinn soll es haben, in 2 Elemente, den gleichen Wert n(die Adresse) einzutragen?

Gruß Tommy

Gorkde:

  for(int i = 0; i < AnzSensors; i++) {                  

SensAddresses[i] = {DataAddress,DataAddress};
  }

Wieso machst Du die Zuweisung nicht einfach in zwei Schritten?! Wie wär's mit

  for(int i = 0; i < AnzSensors; i++) {                  
    SensAddresses[i][0] = DataAddress;
    SensAddresses[i][1] = DataAddress;
  }

??!

Gruß

Gregor

PS: Für das, was Du da zeigst, gehörst Du geschlagen. Erzähl' doch mal, wofür ein zweidimensionales Array gut ist, wenn die Werte dieselben sind

In deinem Fragment sieht man ja genialerweise nicht mal, wie SensAddresses definiert ist.

Aber das

  for(int i = 0; i < AnzSensors; i++) {                  
    SensAddresses[i][0] = DataAddress;
    SensAddresses[i][1] = DataAddress;
  }

kanns ja auch nicht sein. Dann hat er ja in beiden das gleiche drin

vieleicht besser mal klären was das überhaupt werden soll. Mehrdimensionale Arrays von Anfängern schreien eigentlich danach, das man eventuel ein struct haben will ...

Gorkde:
Diese Variante kompiliert, aber ist das auch korrekt?

SensAddresses[i][0] = DataAddress, DataAddress;

Ich meine steht dann auch die definierte Variable in beiden Feldern?

Du solltest dich über den Komma Operator kundig machen.

Und, wenn du schon dabei bist, dir ein ganzes 1000 seitiges C++ Buch durchlesen.
Dann kannst du dir alle diese Fragen sicherlich selber beantworten.

Es soll in beiden das gleiche stehen, ich will die selbe Datenadresse als Startwert in die beiden Werte beider SensorArrays schreiben....

Also genauso wie

    SensAddresses[i][0] = DataAddress;
    SensAddresses[i][1] = DataAddress;

das macht. Nur gerne in einer Zeile, oder geht das nicht?

Gorkde:
Es soll in beiden das gleiche stehen, ich will die selbe Datenadresse als Startwert in die beiden Werte beider SensorArrays schreiben....

Also genauso wie

    SensAddresses[i][0] = DataAddress;

SensAddresses[i][1] = DataAddress;



das macht. Nur gerne in einer Zeile, oder geht das nicht?

Und warum probierst du das nicht einfach ?
Daten übergeben und anschließend Daten auslesen. Einfacher geht es wirklich nicht.

Es geht darum, dass ich das nicht einzeln initialisieren will, weil wenns komplexer wird hab ich da 100 Zeilen.

Das muss doch auch gehen die beiden Felder in einer Zeile zu initialisieren oder?

Und wie Du oben siehst habe ich schon diverses probiert aber nichts funkioniert wenn es in einer Zeile ist.

Beispielsweise
SensAddresses*[0,1] = DataAddress, DataAddress;*
geht auch nicht, dann stehts nur in einem.

Warum Du in beide Felder das Gleiche schreiben willst, hast Du nicht beantwortet und dass die Klammernotation nur bei der Initialisierung in der Deklaration möglich ist, nicht beachtet.

Gruß Tommy

Hi

Was willst Du WIRKLICH?
Wir wollen hier nicht wissen, wo Du denkst, gerade angeeckt zu sein, sonder das Problem, Welches Du eigentlich erschlagen willst.

Mit einer FOR-Schleife kannst Du nahezu beliebig viele Felder auf den gleichen Wert bringen - nur: was soll Das?
(Also auch 100 - und die FOR-Schleife KANN man auch als 1-Zeiler schreiben)

MfG

In einer Zeile:

SensAddresses[i][0] = SensAddresses[i][1] = DataAddress;

@combie ... und bei 100?
(nein, musst Du jetzt nicht zusammen basteln :wink: )

Warum ist doch eigentlich schnuppe denke ich mal.
Ich initialisiere die Werte mit ner Variablen weil das für den jeweiligen Sensor die erste Lese oder Schreibadresse im (anderen) Datenarray darstellt und die ist am Anfang bei allen Sensoren gleich.

Aber wie ich gerade gegoogelt hab, geht das wohl nach der ersten initialisierung nicht mehr.