Renvoyer l'adresse d'un tableau en C - C - Programmation
Marsh Posté le 09-05-2012 à 18:47:00
Bah, euh, ce n'est vraiment pas compliqué. Un truc du genre devrait faire l'affaire :
Code :
|
Ou plus simplement :
Code :
|
Maxwell1664 a écrit : J'ai fait plusieurs essais avec des astérix et autre mais jamais concluant. |
Euh, ne le prends pas mal, mais un language de programmation, surtout le C, ce n'est pas un truc ou tu jettes le code à l'écran en espérant que ça tombe en marche tout seul. Tu devrais quand même étudier un minimum les bases là...
Marsh Posté le 09-05-2012 à 20:40:06
Ca sert à quoi de faire une fonction pour ça?
Il ne faut pas plutôt chercher 'elementDuTableauAPointer' dans le tableau et pointer à son indice?
genre:
Code :
|
?
Marsh Posté le 09-05-2012 à 20:41:55
Salut! Merci pour ta réponse! Je testerai tout ça demain au boulot!
Pas de souci, je ne le prends pas mal du tout! Juste que j'ai fait des essais de manière cohérente au début et après j'ai essayé diverses possibilité histoire de voir les différents messages d'erreur! J'ai fait tout ceci en fin d'après-midi, du coup j'étais fatigué! Merci bien en tout cas! Il me semble que j'ai testé ce que tu me proposes sans succès, mais je me trompe peut-être! Je test tout ça demain matin et je te redis! Merci du coup de main en tout cas!
Marsh Posté le 09-05-2012 à 20:44:57
breizhbugs a écrit : Ca sert à quoi de faire une fonction pour ça?
|
C'est histoire de pouvoir communiquer les valeurs entre différents modules sans envoyer tout le tableau ou sans déclarer le tableau en tant qu'"extern". Je regarderai demain ce que me propose tpierron et ensuite je regarderai aussi ton histoire, un peu fatigué ce soir pour voir ce que tu me proposes! Après avoir fait du C pendant 8h et que ça fait des semaines que ça dure ! Je regarde tout ça demain, merci bien en tout cas!
Marsh Posté le 09-05-2012 à 22:31:11
breizhbugs a écrit : Ca sert à quoi de faire une fonction pour ça? |
Accessoirement, ça permettrait de (légèrement) changer la représentation du type (genre une liste chainée de table fixe pour gérer le retaillage dynamique, sans réallocation complète du bloc). Cela dit avec un indice en "unsigned char", c'est mal barré... et de toute façon, faudra faire gaffe au chevauchement de bloc mémoire, mais ça reste une technique intéressante (peut-être pas sur des blocs aussi petit cela dit).
Marsh Posté le 10-05-2012 à 09:06:31
Mais pourquoi ce n'est pas bien d'avoir un indice en unsigned char?
EDIT : Je viens d'essayer ce que tu me propose tpierron et en fait c'est bien ce que j'avais faire hier et j'ai une erreur genre :
#161 declaration is incompatible with previous "maFonction" -> à la ligne "unsigned char * maFonction(unsigned char elementDuTableauAPointer)"
#515 a value of type "int" cannot be assigned to an entity of type "unsigned char *"
Donc voilà, c'est pour ceci que je vous demande de l'aide... je vais voir ce que me propose breizhbugs là...
EDIT2 : Arf! Désolé, je viens de voir que dans mon code de test, j'avais oublié d'inclure le fichier .h ... du coup il n'était pas content... ça m'apprendre à jouer à Skyrim jusqu'à 1h du mat'! Merci beaucoup à vous deux! Maintenant que ça fonctionne dans mon code d'essai, je vais voir si ça joue dans mon projet et je vous tiens au courant! Bon là j'ai mis des int partout au lieu d'unsigned char, mais mon tableau est de type unsigned char en fait donc voilà! Et de taille 15 sauf erreur et également de taille fixe!
Marsh Posté le 10-05-2012 à 11:01:38
Merci pour les explications.
Marsh Posté le 09-05-2012 à 17:53:45
Salut à tous,
Après plusieurs essais et de recherche sur le net, je fais appel à vous...
Je suis en train de coder un programme ayant plusieurs modules. A un moment donné, j'ai besoin d'utiliser un tableau d'unsigned char de taille fixe déclarer dans le main.c dans un autre module. Les solutions non-élégantes sont de déclarer ce tableau en tant qu'extern ou alors d'envoyer le tableau complet en argument... ce que je ne souhaite pas faire si possible.
Du coup, j'aimerais faire une fonction permettant de me renvoyer l'adresse d'un élément du tableau mais je n'y arrive pas... pouvez-vous m'aider dans la syntaxe SVP? J'ai essayé pas mal de choses, mais toujours des erreurs.
Je suis conscient que ce que je dis là n'est pas très clair, alors pour essayer de clarifier tout ceci, voici à quoi ceci devrait ressembler :
unsigned char maFonction(unsigned char elementDuTableauAPointer)
{
return &tableau[elementDuTableauAPointer]
}
tableau étant un tableau d'unsigned char défini en tant que variable globale dans le module. J'ai fait plusieurs essais avec des astérix et autre mais jamais concluant. Quelqu'un pourrait-il m'aider ou alors je vous explique mal mon problème? Merci d'avance!
---------------
Intel Core i7 2600K / Corsair H60 / Asus P8P67 Deluxe / Asus GTX 580 DirectCUII / Corsair Vengeance 1866 MHz 2x4 Go CAS9 / NZXT Phantom rouge et blanc / Seasonic X-850 / Corsair Force Series GT 240 Go / Western Digital Caviar Blue 1 To SATA III / Lite-On