Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2727 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[c] Passer l'adresse d'un tableau a 2 dim en parametre [OK]

n°721183
darkoli
Le Petit Dinosaure Bleu
Posté le 10-05-2004 à 21:27:02  profilanswer
 

Reprise du message précédent :

fif_x a écrit :

Donc il faudrai que je passe à ma fonction un tableau a 2 dimensions "plats" (si j'ai bien compris).
 
Mais si je fait comme a proposé darkoli :

Code :
  1. Names = (char**) malloc (sizeof(char)*nb*MAXCARINNAME);
  2. ...
  3. strcpy(Names[i*MAXCARINNAME], "chien" ); /*pour accéder a l'élément i */


A l'exectution, j'ai un seg fault.


J'ai copié/collé ton code et j'ai oublié d'enlever une étoile ! :D

Code :
  1. Names = (char*) malloc (sizeof(char)*nb*MAXCARINNAME);

:D

mood
Publicité
Posté le 10-05-2004 à 21:27:02  profilanswer
 

n°721192
Taz
bisounours-codeur
Posté le 10-05-2004 à 21:46:27  profilanswer
 

Names = malloc (nb*MAXCARINNAME);

n°721193
Taz
bisounours-codeur
Posté le 10-05-2004 à 21:46:52  profilanswer
 

voir meme fait un calloc pour les char*, ça peut servir

n°721227
darkoli
Le Petit Dinosaure Bleu
Posté le 10-05-2004 à 22:19:16  profilanswer
 

Taz a écrit :

voir meme fait un calloc pour les char*, ça peut servir

Finalement c'est bien ce que j'avais écrit. Il faut que j'arrête de pas dormir moi. :D

n°721371
djdie
L'heure, c'est l'heure.
Posté le 11-05-2004 à 01:33:59  profilanswer
 

fif_x a écrit :

Merci, mais le problème étant que je ne connais pas à l'avance la taille du tableau.
Donc je doit modifier le prototype de ma fonction.
 
L'autre problème c'est que dans mon programme, soit j'appelle ma fonction avec un Vrai tableau a 2 dimensions, soit je l'appelle avec un tableau a 2 dimensions alloué dynamiquement.
 
Est-ce possible de faire un prototype de fonction qui accepte les 2 types ???


Euh non... Ce n'est pas imaginable car à chaque fois que tu accèdes à un élément du tableau à deux dimensions ou du pseudo-tableau à 2 dimension (i.e. le tableau de pointeurs vers des tableaux) le compilateur doit générer un code fondamentalement différent.
 
Si tu veux écrire une seule fonction il faut faire un choix. Logiquement ce sera la variante dynamique...

n°721570
fif_x
Posté le 11-05-2004 à 10:46:00  profilanswer
 

ok, donc si j'alloue mon tableau dynamiquement, mais "plat" comme celui ci :

Code :
  1. Names = (char*) malloc (sizeof(char)*nb*MAXCARINNAME);


il aura la meme "structure" dans la mémoire qu'un tableau alloué "statiquement"

Code :
  1. char names[10][20];


et donc je pourrai passer les 2 en parametre de ma fonction.
 
Merci a tous, ça marche très bien !!! :) :) :)
(les tableaux c'est pas mon truc :D)
 

n°722231
djdie
L'heure, c'est l'heure.
Posté le 11-05-2004 à 17:34:17  profilanswer
 

Cela dit il reste inutile de caster le retour de malloc et sizeof(char) vaut toujours 1 ;)

Code :
  1. Names = malloc(nb * MAXCARINNAME);

ou éventuellement

Code :
  1. Names = malloc(nb * MAXCARINNAME * sizeof *Names);

qui est générique quel que soit le type pointé par Names.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[c++] Se rendre a une adresse url nouvel essaiTransformer une image monochrome en tableau de bit
procedure : passage de parametre[PHP] savoir si un tableau contient au moins un element ?
recuperer la premiere ligne d'un tableauAfficher un gif dans mon tableau d'affichage [edit]
Faire un tableau de variables d'une classe?[Dreamweaer Mx] : Pb d'espaces entre 'tableau de mise en forme'
passer des donnees comme avec un formulaire, mais sans formulaire...[Builder6] tableau pour un accès rapide et régulier de données?
Plus de sujets relatifs à : [c] Passer l'adresse d'un tableau a 2 dim en parametre [OK]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR