Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Pointeur sur tableau multi-dimensionnel statique [ Archives / Au secours ] (pointejb)

mardi 9 mars 2004 à 12:35:04 | Pointeur sur tableau multi-dimensionnel statique

pointejb

Bonjour à tous,

Alors voilà :

Je déclare un tableau de string à plusieurs dimensions de façon statique :
string myMatrice[20][10];

Ensuite je veux pouvoir le passer en argument d'une fonction du type :
refillMatrice(string** theMatrice);

En appelant :
refillMatrice(myMatrice)

cela ne compile pas car le compilo s'attends à avoir un pointeur de type dynamique alors que je lui passe un tableau statique.
En castant cela compil mais ca coredump :
refillMatrice((string**)(myMatrice));

Je pensais aussi passer par un tampon du style :
string* ptrMatrice = &myMatrice[0][0];
string** ptrPtrMatrice = &ptrMatrice;

refillMatrice(ptrPtrMatrice);

Mais ca core dump aussi.

Quelqu'un aurait-il une solution ?
Est-il possible de déclarer un pointeur de type spécifique 'pointeur sur tableau statique'?


Merci.





mardi 9 mars 2004 à 14:50:17 | Re : Pointeur sur tableau multi-dimensionnel statique

ymca2003

si tu veux passer un tablau statique à 2 dimension, il faut indiquer au compilateur la 2ème dimension (pour qu'il puisse récupérer les indices) :

refillMatrice(string mat[][10]);


tu ne paut pas utiliser la même fonction pour remplir une matrice statique et dynamique car l'agencement des éléments en mémoire n'est pas le même :

matrice statique : tous les éléments se suivent en mémoire (ligne par ligne et colonne par colonne)

matrice dynamique : il s'agit en fait d'un tableau de sous-tableau et les sous-tableau ne se suivent pas forcéménts en mémoire.

mardi 9 mars 2004 à 15:47:07 | Re : Pointeur sur tableau multi-dimensionnel statique

pointejb


Ok, un gros merci à ymca.


mardi 9 mars 2004 à 16:16:22 | Re : Pointeur sur tableau multi-dimensionnel statique

Hylvenir

Une drôle...

template< typename T >
void fonction( T* obj, int rows, int columns )
{
for ( int i = 0; i < rows; ++i )
for ( int j = 0; j < columns; ++j )
cout << i << ", " << j << " : "
<< *(obj + i*columns + j )
<< endl;
}

int main()
{
string myTable[10][20];

myTable[0][0]= "Yeah";
myTable[0][12]= "Bonjour le monde";
myTable[5][2]= "Au revoir le monde";

fonction( (string*)&(myTable[0][0]), 10, 20 );
}

mercredi 10 mars 2004 à 20:43:57 | Re : Pointeur sur tableau multi-dimensionnel statique

Alligokouax


euh juste pour etre sur ...

si tu fais un truc du style
refillmatrice (matrice &, autres arguments)

le passage par parametre car le nom d'un tableau est l'adresse de la premiere case ...

et pis si c'est statique ... mets les dimensions a cote non ?

enfin moi je dis je code en logo d'habitude alors je vais y retourner ...

10 avance 4
20 recule 10
30 rond 5

jeudi 11 mars 2004 à 10:46:15 | Re : Pointeur sur tableau multi-dimensionnel statique

pointejb


merci Hylvenir pour ta solution élégante.

jeudi 11 mars 2004 à 11:20:14 | Re : Pointeur sur tableau multi-dimensionnel statique

Hylvenir

De rien :-)
Mais attention, cette solution n'est pas si élégante que ça
à cause du *(obj + i*columns + j ) qui peut
ne pas marcher (je laisse les gurus expliquer ça)
sur certaines implémentation (ou architecture).
Mais cette solution à l'avantage de compiler sous
Visual C++.
Sous Borland 5.5.*, gcc, .... une "meilleure" solution
serait :

// Evite d'utiliser un pointeur
#include <iostream>
#include <string>
using namespace std;

template< typename T, int ROWS, int COLUMNS >
void fonctionT( const T (&obj)[ROWS][COLUMNS] )
{
for ( int i = 0; i < ROWS; ++i )
for ( int j = 0; j < COLUMNS; ++j )
cout << i << ", " << j << " : "
<< obj[i][j] << endl;
}

string myTable[6][13];

int main()
{
myTable[0][0]= "Yeah";
myTable[0][12]= "Bonjour le monde";
myTable[5][2]= "Au revoir le monde";

fonctionT( myTable );
}





Cette discussion est classé dans : string, tableau, pointeur, statique, mymatrice


Répondre à ce message

Sujets en rapport avec ce message

Convertir un tableau de vecteur de String en pointeur [ par fcoutel ] Bonjour, J'ai cree un tableau dynamique a 2D de type string vector> tab,  je voudrais savoir quel est le meilleur moyen de le convertir en char***.M Noob et C/C++ [ par thedarkkillerz ] Bonjour, je suis habitué au C#  et au confort de Visual Studio et je voudrait passer au C/C++, j'ai donc suivit pas mal de cours sur le net mais il y Probleme avec pointeur urilisant string [ par Orlyn ] Bonjour, Je viens de finir mon prog de gestion de liste d'attente avec des structures comme ceci : struct Maillon { int numero; Maillon *suivant; stucture,pointeurs en c [ par sdiri_med ] salut pr tou l'mondequi peux m'aidé a resoudre se probléme en c ala base des structures & les pointeur  :1 /  écrire un tableau de 20 éléments (etudia inserer un entier dans un tableau de int [ par clcat ] salut la compagnie j ai un ptit probleme(visual C++)j ai un tableau de string :   string TAB[10];et j ai un entier, p=3 par exemple la valeur de p n'e convertion pointeur vers tableau [ par gdpasmini ] Salut !Quelqu'un pourrait il me dire comment copier la chaine de caractere pointé par char * nom dans un tableau char name[] ??Merci d'avance ! Prob Allocation dynamique de strcture complexe (contenant des pointeurs) [ par thono42 ] Bonjour, J'ai un petit souci peut être pouvez vous m'aider: J'essaie d'effectuer une allocation dynamique pour le pointeur se trouvnat dans cette stru [C] Probleme de passage d'un pointeur de tableau [ par tenev911 ] Bonjour, voici mon probleme :J'utilise la librairie ncurses.h et il permet de faire un type de variable appellé WINDOW (qui correspond graphiquement à Structures en C / Win2k / Dev-Cpp [ par BaptX ] Bonjour à tous,J'aurai quelques questions à vous poser en ce qui concerne le passage de structures en C. Comme c'est un peu comme les pointeurs, je me Pb de pointeur [ par Jack94 ] Salut a tous, Voila j'ai un pb je defini un tableau et tout et j'ai definie deux variable int a et b qui on pour valeur respectif les valeur ranger d


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version


HTC Magic

Entre 429€ et 429€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.