• Aucun résultat trouvé

Déclaration de tableaux en C++

N/A
N/A
Protected

Academic year: 2022

Partager "Déclaration de tableaux en C++"

Copied!
3
0
0

Texte intégral

(1)

Déclaration de tableaux en C++

Les tableaux en C++ sont conceptuellement très simples: il s'agit d'un pointeur sur le premier élément. Cette simplicité entrainera plusieurs complications au niveau de leur usage et des bogues potentiels. Ainsi, si nous faisons, par exemple, la déclaration suivante:

int* p ;

p pourrait être un simple pointeur sur un entier ou alors un tableau. Ceci veut aussi dire que connaissant seulement le pointeur, nous ne pouvons pas connaitre la taille du tableau. Donc, il faut toujours une variable supplémentaire contenant cette information.

Allocation

Il existe deux méthodes d'allocation de tableau: dynamique et statique.

1. Dynamique

La syntaxe est la suivante:

type* tab = new type [ n ] ;

type est le type d'objet dans le tableau, tab est le nom de la variable et n est le nombre d'éléments dans le tableau. n doit être une expression de type entier.

Pour libérer la mémoire ainsi allouée, il faut faire ceci:

delete [] tab ;

2 Statique : La syntaxe est la suivante:

type tab[ N ] ;

où type est le type d'objet dans le tableau, tab le nom de la variable et N le nombre d'éléments dans le tableau. N est une expression de type entier dont l'évaluation peut être faite au moment de la compilation. Autrement dit, la valeur résultante est une constante. Ceci implique qu’il ya lieu de connaître d'avance la taille du tableau, ou du moins sa taille maximale.

Il est possible d'initialiser toutes les valeurs d'un tableau statique ainsi:

1

(2)

type tab[ N ] = { val1 , val2 , ... , valN } ;

En réalité, avec une telle initialisation, nous pouvons omettre N, car le compilateur peut le déduire par le nombre d'éléments entre accolades:

type tab[] = { val1 , val2 , ... , valN } ;

Tableaux à plusieurs dimensions

Les tableaux à plusieurs dimensions sont en réalité des tableaux de tableaux. Un tableau en C++ est donc un pointeur sur le premier élément, le type d'un tableau à plusieurs dimensions sera alors un pointeur sur un tableau à une dimension de moins. Par exemple, un tableau à deux dimensions sera déclaré ainsi:

type** tab ;

Au niveau de l'allocation dynamique, en C++. Il faut faire ceci:

type** tab = new type* [ n1 ] ; for ( int i = 0 ; i < n1 ; ++ i ) {

tab[ i ] = new type[ n2 ] ; }

Par contre il existe un raccourci similaire pour l'allocation statique:

type tab[ N1 ][ N2 ] ;

La désallocation mémoire de du tableau tab se fait ainsi for (int i=0; i< n1; i++)

delete [] tab[i];

delete [] tab;

Un autre exemple

CString **m_table; // Déclaration du tableau à 2 dimensions m_table int m_nbLig; // Variable représentant le nombre de lignes

int m_nbCol; // Variable représentant le nombre de colonnes // Allocation mémoire de m_table

m_table = new CString*[m_nbLig];

for(int i=0; i<m_nbLig; i++)

m_table[i] = new CString[m_nbCol];

2

(3)

// Traitement // ...

// Désallocation mémoire de m_table for (int i=0; i<m_nbLig; i++)

delete [] m_table[i];

delete [] m_table;

3

Références

Documents relatifs

Puis on recommence en partant cette fois du deuxième élément : on remplace le pointeur qu’il stocke initialement ( i.e. un pointeur vers le troisième élément) par un pointeur vers

Dans la grille, faites glisser le pointeur pour sélectionner le nombre de colonnes et de lignes à créer dans le tableau, puis relâchez le bouton de la souris.. Pour

– Une structure contient un élément de la liste et un pointeur sur l'élément suivant. – La liste est déterminée par un pointeur sur son premier élément – La liste vide

une liste = pointeur une structure qui contient un tableau alloué automatiquement (taille max réservée à la compilation) la position du dernier élément (taille réelle du tableau). Si

Écrire un programme demandant aux joueurs la dimension de la grille sur laquelle ils veulent jouer, et leur permettant de faire une partie.. Le gagnant est le joueur alignant un

Si l’élément du tableau TC lui correspond la valeur 1 dans le tableau TE alors cette élément sera placé au début du tableau T, sinon il sera placé à la fin du tableau T. Exemple :

• par un tableau : Chaque élément de la liste peut être désigné par sa place dans la séquence, à l’aide d’un index.. Pour accéder à un élément déterminé, on utilise le

Avec la notation de pointeur (i.e. pas de tableau), écrivez la fonction strrchr qui renvoie un pointeur sur la dernière occurrence d’un caractère dans une chaîne de caractères..