Wert in Array über Zeiger ändern, aber wie?
-
tach leute,
für mein dsp-programm müßte ich den wert in einem puffer über zeiger verändern. habe aber leider keinen plan wie das geht.
hier mal einwenig textfloat *MyInBuffer; float *MyOutBuffer; extern float InBuffer[]; extern float OutBuffer[]; extern void ArrayMultiply(float *MyInBuffer, float *MyOutBuffer, int Factor); int main(void) { int Factor = 2; MyInBuffer = InBuffer; MyOutBuffer = OutBuffer; MyInBuffer[0] = 1; ArrayMultiply(MyInBuffer,MyOutBuffer,Factor); return 0; }
die puffer werden fest im speicher definiert
.SEGMENT /DM dm_My_Buffer; .VAR _InBuffer[5]; .GLOBAL _InBuffer; .VAR _OutBuffer[5]; .GLOBAL _OutBuffer; .ENDSEG;
jetzt möchte ich über die zeiger MyInBuffer die werte im puffer verändern....
wenn da einer nenn plan hat, bitte melden
-
Die ausfühliche Version ist wohl:
*(MyOutBuffer+i)=Faktor * *(MyInBuffer+i);
Oder kürzer mit Array-Schreibweise:
MyOutBuffer[i]=Faktor*MyInBuffer[i];
-
danke schonmal,
die sache ist die, das ich aus zeitgründen die multilikation in assembler vornehmen will. ist also mixed c (wie es so schön heißt).
wenn ich
*(MyInBuffer) = 1;
schreibe, steht im puffer aber eine adresse und kein int.
-
"MyInBuffer" enthält eine Adresse, "*MyInBuffer" dereferenziert den Zeiger - damit enthält es den Wert, auf den dein Zeiger verweist.
PS @Assambler: Wie man mit ASM auf Pointer zugreift, weiß ich leider nicht - aber dort müßtest du vermutlich selber drauf achten, wie weit du den Zeiger weiterschiebst.
-
das mit den zeigern ist jezt klar.
in meinem Visual DSP haut das zum verrecken nicht hin. ich kriege in die speicherzellen des puffers keine werte über zeiger geändert.DAnke erstmal, ich versuch das mal im DSP forum.