Brocolpif
Messages postés3Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention10 mars 2009
-
9 mars 2009 à 19:11
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013
-
17 mars 2009 à 14:25
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++;
}
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 10 mars 2009 à 15:03
Salut,
Avant de te lancer dans de telles choses, tu pourrais ouvrir un bon bouquin de C a la section pointeur.
Lorsque tu fais :
float *pfVar1, *pfVar2;
pfVar1 = (float *) malloc(sizeof(float));
pfVar2 = (float *) malloc(sizeof(float));
pfVar1 = pfVar2 + 2; // Ici tu ne fait que modifier le pointeur de pfVar pas étonnant que tu perdes la valeur. PAS OK
Il faut faire :
*pfVar1 = *pfVar2 + 2; // Ici en mettant * tu fait bien la distinction enter le pointeur et la valeur associée à ce pointeur. OK
Corrige ton code dans ce sens la et ca devrais aller mieux.
Autre chose, évote de déclarer des variables globales surtout pour ce que tu en fais.
Et donne des noms parlant à tes fonction et variables.
Brocolpif
Messages postés3Date d'inscriptionmardi 7 janvier 2003StatutMembreDernière intervention10 mars 2009 10 mars 2009 à 19:00
Salut, merci pour ta reponse
je pense que tu n'a pas bien vu la subtilité de la chose lorsque tu m'ecrit
*pfVar1 = *pfVar2 + 2;
et bien tu met dans la valeur de pfVar1 la valeur de pfVar2 incrementé de 2
moi c'est beaucoup plus fou
j'ai mon tableau allSndP (que j'ai declaré en global pour l'exemple ;) ) qui fait 16float
et j'ai mon tableau "truc" qui fait 4float
en fait je veut mettre que "truc" pointe vers le premier element du tableau
puis second appel vers le 5eme
puis troisieme appel vers le 9eme
puis quatrieme appel vers le 13eme
--> en fait je veut prendre 4 valeur par 4 valeur de mon tableau allSndP et "les mettre" dans truc et donc j'incremente l'adresse de 4 par 4
et bien cela fonctionne à merveille dans func et lors du retour dans myCall et bien il n'y a plus rien (je repete que je ne veux pas modifier la definition de "func" et que je ne veux pas utiliser le memcpy)
DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 17 mars 2009 à 14:25
Salut,
Ce que tu souhaites faire est impossible tel que tu le présente.
Je ne sais pas si tu es toujours bloqué sur ton problème mais une solution serait de faire en sorte à ce que ta fonction retourne un pointeur sur l'élément qui t'interresse.