In meinem eingebetteten c-Programm habe ich eine Struktur:C Pointer Frage
struct var{
unsigned long value;
unsigned long length;
+ More
}
Ein Array dieser Strukturen wird verwendet, um Variablen zu halten. Die meisten der gespeicherten Variablen werden einfach in 'value' gespeichert und die Länge wird auf 1 gesetzt.
Einige dieser Variablen sind jedoch Arrays und ich versuche, die Startadresse in 'value' zu speichern.
unsigned long lookup[10];
variables[x].length = 10;
Dann bin ich nicht ganz sicher, wie die Adresse zu speichern ...
variables[x].value = lookup;
// lookup is a pointer so I cant put it into value
ODER
variables[x].value = (unsigned long)lookup;
// value reads back through sprintf+uart as '536874692'
// which couldnt be a valid memory address!
ich könnte nur eine Zeigervariable in der Struktur geben und füge
EDITIEREN:
Ich wollte vermeiden, den Zeiger zur Struktur hinzuzufügen, da ich zurückgehen und die Flash-Lese-/Schreibfunktionen neu schreiben müsste, um den Zeiger zu speichern. Diese sind ziemlich kompliziert und funktionieren derzeit, also würde ich sie lieber nicht anfassen!
Warum konnte 536874692 keine gültige Adresse sein? – jalf
Das ist mir gerade klar geworden. 536874692 ist 20000EC4, die wahrscheinlich gültig ist ... – Tim
Beachten Sie, dass, wenn Ihre "Flash-Lese-/Schreibfunktionen" nicht wissen, dass Nachschlagen ein Zeiger ist, sie nicht wissen, um die Daten zu speichern, auf die es zeigt. – caf