Hallo, Habe Probleme beim schreiben/lesen einer vom Zeiger adressierter Speicherzelle. unsigned int Array[20]; unsigned int *ArrayZeiger; unsigned int *FifoBufferOutput[20]; unsigned int FifoCount; unsigned int myArrayWert; FifoCount = 0; FifoBufferOutput[FifoCount++] = &Array[0]; FifoBufferOutput[FifoCount++] = &Array[1]; FifoBufferOutput[FifoCount++] = &Array[2]; FifoBufferOutput[FifoCount++] = &Array[3]; ArrayZeiger = FifoBufferOutput[3]; Array[*ArrayZeiger] = 1; myArrayWert = Array[*ArrayZeiger]; ********** im FifoBufferOutput werden die Adressen des Arrays richtig abgelegt. wenn ich per Zeiger die gewünschte Adresse ansprechen will, beschreibt oder list er immer die erste Adresse(Zelle) des Array, obwohl die richtige Adresse übergeben wird. Gruß Siegfried
Gast
#996617
> Array[*ArrayZeiger] = 1; > myArrayWert = Array[*ArrayZeiger]; *ArrayZeiger = 1; myArrayWert = *ArrayZeiger; Bei der Buffergrösse ist es sinnvoller mit Indizes zu arbeiten ...
Und aus meiner Sicht vorher statt ArrayZeiger = FifoBufferOutput[3]; ArrayZeiger = &FifoBufferOutput[3]; es soll ja die Adresse und nicht der Inhalt zugewiesen werden. Tassilo
Gast
#996623
Das liegt wahrscheinlich daran, dass in Array[3] ne 0 drin steht und somit immer Array[0] addressiert wird. Deine Zugriffe wirken irgendwie konfus und ich glaube nicht, dass du das bewirken willst, was du tust.
Gast
#996626
@Tassilo Böhr Nö, in FifoBufferOutput[3] steht ja ne Adresse drin.
Hallo, das "FifoBufferOutput[] enthält eine Adresse, nicht den Wert, der bearbeitet werden soll. FifoBufferOutput belegt die Adresse 02B - 231 Array belegt die Adresse 235 - 25B übergebene Werte durch diese Code ->FifoBufferOutput[FifoCount++] = &Array[X];<- FifoBufferOutput Adresse 20B Wert 0235 FifoBufferOutput Adresse 20D Wert 0237 FifoBufferOutput Adresse 20F Wert 0239 FifoBufferOutput Adresse 211 Wert 023B Ich lege in FifoBufferOutput die Adresse ab, die ich im Array bearbeiten möchte. Wenn ich dann ArrayZeiger = FifoBufferOutput[3]; die Adresse aus dem FiFoBufferOutput[3] in den ArrayZeiger übergebe, ist der Wert "023B" enthalten. Wenn jetzt der Wert des Array geändert werden soll wird nicht die Adresse "023B" genutzt, sondern die Adresse "0235", also die erste Adresse des Array. Bei anderen Adressen das gleiche. Array[*ArrayZeiger] = 1; Gruß Siegfried
Gast
#996671
Warum sollte denn auch die Adresse 03B genutzt werden? Ich glaube du hast die Zeiger-Logik nicht so ganz verstanden oder einen Denkfehler. SO:
1 | |
würdest du auf das Element unter der Adresse 03B zugreifen.
Hallo, Ich gebe mich geschlagen. -> *ArrayZeiger = 1; <- das war es, was ich gebraucht habe. an alle, vielen Dank Gruß Siegfried
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.