begin process at 2010 03 15 16:10:02
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Tableau de pointeur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tableau de pointeur

lundi 9 mars 2009 à 19:11:44 | Tableau de pointeur

Brocolpif

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
mardi 10 mars 2009 à 15:03:16 | Re : Tableau de pointeur

DeAtHCrAsH

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.

Bon courage.

Shell
mardi 10 mars 2009 à 19:00:23 | Re : Tableau de pointeur

Brocolpif

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)

merci encore deathcrash
mardi 17 mars 2009 à 14:25:02 | Re : Tableau de pointeur

DeAtHCrAsH

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.

Exemple :
float * func(float *outputBuffer ){
    return allSndP + ++temp * 4;
}

truc = func(truc);

Bon courage.

Shell


Cette discussion est classée dans : truc, float, func, allsndp, outputbuffer


Répondre à ce message

Sujets en rapport avec ce message

Utilisation d'une fonction d'une fonction membre d'une classe [ par guydegnol ] Bonjour,J'aimerais utiliser une fonction ayant comme argument une fonction membre d'une classe.Vous pouvez trouver un exemple tres simple de ce que je placer aléatoirement des arbres [ par aymardhb9 ] En fait, je n'arrive pas à placer aléatoirement mes arbres sur mon terrain, je pensait avoir le bon code mais à apparemment il est erroné et j'aimerai Tableau en parametre [ par tomalille ] Bonjour, j'ai un segmentation fault sur l'execution d'un programme. Le probleme vient d'une fonction ayant un tableau en parametre. Lorsque je veux a Probleme de linkage bizarre [ par turnerom ] Bonjour,j'ai un probleme assez bizarre, comme un exemple vaut mieux qu'un long discour, voici un exemple de ce que j'ai://truc.h#ifndef TRUC_H#define langage C : probleme syntax [ par Keymi ] Bonjour , tous d'abord le but de l'exercice est de faire une fonction permettant de determiner la valeur maximale et minimale d'un tableau de flottant Sauvegarder float en fichier texte [ par kididouille ] Bonjour, j'ai un tableau de float et j'aimerai l'enregistrer dans un fichier texte.A l'ouverture de ce fichier texte (avec le bloc note par exemple) j Transformer un float en string [ par hasen ] Bonjour à tous!!! Je pense que le titre est assez explicite, je voudrais transformer une variable de type float en string de facon à pouvoir l'ajouter petit problème de syntaxe [ par blanccc ] rebonjour tout le monde, j'ai un petit problème de syntaxe en C. voilà, j'ai une variable var1 que j'ai définie comme ça : int N = 'un entier quelco Free() veut pas désallouer.... [ par benlustr ] Bonjour à tous, c'est encore moi Dans une fonction, j'ai deux pointeurs qui s'incrémentent dans une boucle. à la fin de la fonction, je libère les zon fast fourier transform [ par niketou ] Salut.J'ai pris une source de fft mais je n'ai pas compris un truc:Je me retrouve avec deux tableaux de sortie (reel et imaginaire en floats).Je n'ai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales