begin process at 2012 02 13 01:13:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Pointeur sur tableau multi-dimensionnel statique


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

Pointeur sur tableau multi-dimensionnel statique

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ée 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 Tableau statique de taille importante -> seg fault [ par vinc1008881 ] Bonjour à tous, Je rencontre un problème pour le moins bizarre concernant des tableaux statique de "grande" taille en 3D. Voilà deux codes : doub Envoyer un pointeur sur un tableau [ par xcxl ] Bonjour, J'ai une question sur les pointeurs à vous poser (décidément les pointeurs y'a pas plus complexe...erreur de segmentation à chaque fois) J' Problème avec un tableau string [ par 4u4me4us ] Bonjour tout le monde, je me permet de vous sollicité car je ne comprends pas mon erreur de compilation. J'ai une class que j'ai nommé "perso". Dan 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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,374 sec (4)

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