Bonjour
voici mon code qui marche pas : les commentaires sont dans le code
Pourquoi es-ce que ca ne veut pas ? En fait j'essaye ici de ne pas recopier les données de allSndP vers outputBuffer, j'aimerais que à la sortie de "func", "truc" soit mis a jour comme dans func.
PS : La déclaration de "func(float *outputBuffer )" doit rester la meme quelque soit la solution (c'est une librairie)
#include <stdio.h>
#include <stdlib.h>
float *allSndP;
int temp = 0;
void func(float *outputBuffer ){
outputBuffer = allSndP + temp * 4;
// fonctionne : la valeur n'est pas encore perdue ?
printf("--> outputBuffer[2] = %f, allSndP[%d] = %f\n",outputBuffer[2], 2 + temp*4, allSndP[2 + temp*4]);
temp++;
}
void myCall(){
float *truc;
truc = (float *) malloc( 4 * sizeof(float) );
func(truc);
func(truc);
func(truc);
func(truc);
// ne marche pas : la valeur est perdue ?
printf("--> truc[2] = %f, allSndP[14] = %f\n",truc[2], allSndP[14]);
}
int main(void) {
int cpt;
allSndP = (float *) malloc( 16 * sizeof(float) );
for (cpt=0;cpt<16;cpt++) allSndP[cpt] = cpt;
myCall();
return 0;
}
Ceci est la sortie
--> outputBuffer[2] = 2.000000, allSndP[2] = 2.000000
--> outputBuffer[2] = 6.000000, allSndP[6] = 6.000000
--> outputBuffer[2] = 10.000000, allSndP[10] = 10.000000
--> outputBuffer[2] = 14.000000, allSndP[14] = 14.000000
--> truc[2] = 0.000000, allSndP[14] = 14.000000
Merci pour toute explication