Rechercher : dans
Par :

Différence pointeur/tableau en C

Dernière réponse le 12 avr 2009 à 12:18:06 amouyi50, le 11 avr 2009 à 16:35:17 
 Signaler ce message aux modérateurs

Salut,

Quel est la différence entre :
void fonction(char *tab) {
//code
}

et :
void fonction(char tab[]) {
//code
}

et
void fonction(char tab[MAX]) {
//code
}

?
Dans quel cas on utilise l'un plutôt que l'autre ?

Merci pour votre aide.

Configuration: Windows XP
Firefox 2.0.0.16

Meilleures réponses pour « Différence pointeur/tableau en C » dans :
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Décaler les éléments d'un tableau (Rotation) -Récursivité- VoirVoici une procédure récursive qui permet de décaler tous les éléments d’un tableau d’une position à droite à partir de la position p Procedure Decaler (Var t : Tab; p, n : integer); Begin If p
Introduction à la STL en C++ (standard template library) VoirIntroduction Principales classes de la STL std::pair std::list std::vector std::set std::map Les iterators iterator et const_iterator reverse_iterator et const_reverse_iterator Les algorithmes ...
Les pointeurs en langage C VoirDéfinition d'un pointeur Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné. La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des...
Langage C - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...

1

etudiant89, le 11 avr 2009 à 16:54:51

Pas de différence entre "tab[]" et "*tab" dans les 2 cas ça pointe sur la première case du tableau mais sans la spécification de la taille du tableau alors que c le cas avec "tab[MAX]" ici on précise la taile du tableau ( un tableau de taille maximale MAX).
et il ne faut pas oublier l'initialisation de MAX:
define MAX 100 ;( à titre d'exemple)

Répondre à etudiant89

2

amouyi50, le 11 avr 2009 à 18:14:22

Merci etudiant89
Il n'y a même pas une subtilité entre void fonction(char tab[]) { ...} et void fonction(char *tab) { ...} ?

Et ça fait quoi si je ne donne pas la bonne valeur de MAX ?
Par exemple : void fonction(char tab[10]) alors que j'ai déclaré tab comme char tab[20] ?

Et pour les tableaux à deux dimensions :
Il y a différence entre void fonction(char **tab) et void fonction(char tab[][MAX]) et void fonction(char tab[MAX][MAX]) ?

Désolé pour les questions, mais je cherche à comprendre.

Encore merci

Répondre à amouyi50

3

amouyi50, le 12 avr 2009 à 01:17:52

Petit up !

Répondre à amouyi50

4

 fiddy, le 12 avr 2009 à 12:18:06

Salut,
Il n'y a même pas une subtilité entre void fonction(char tab[]) { ...} et void fonction(char *tab) { ...} ?
Non aucune. Le compilateur se ramène au cas *tab. Il envoie toujours l'adresse du premier élément du tableau.
Et ça fait quoi si je ne donne pas la bonne valeur de MAX ? void fonction(char tab[MAX]) { ...}
Rien. MAX est ignoré. Voire réponse ci-dessous.

Il y a différence entre void fonction(char **tab) et void fonction(char tab[][MAX]) et void fonction(char tab[MAX][MAX]) ?
Pour void fonction(char**tab), cela permettra de modifier l'adresse de l'objet pointée par tab (double pointeur).
Pour void fonction(char tab[][MAX]) et void fonction(char tab[][MAX]), cela est strictement équivalent. Le code sera compilé comme : void fonction(char (*tab)[MAX]). La première dimension est donc inutile et sera ignorée. Par contre, l'autre dimension est importante.

De manière plus générale, pour un tableau à N dimensions, le compilateur compilera comme :
void fonction(char (*tab)[DIM1][DIM2]...[DIMN]. Donc la première dimension est ignorée.

J'espère avoir répondu à ta question :-))).

Cdlt
Google is your friend

Répondre à fiddy
Collection CommentÇaMarche.net