Différence pointeur/tableau en C
Fermé
amouyi50
Messages postés
3
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
12 avril 2009
-
11 avril 2009 à 16:35
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 12 avril 2009 à 12:18
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 12 avril 2009 à 12:18
A voir également:
- Différence pointeur/tableau en C
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Difference tcp udp - Guide
4 réponses
etudiant89
Messages postés
4
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
11 avril 2009
11 avril 2009 à 16:54
11 avril 2009 à 16:54
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)
et il ne faut pas oublier l'initialisation de MAX:
define MAX 100 ;( à titre d'exemple)
amouyi50
Messages postés
3
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
12 avril 2009
11 avril 2009 à 18:14
11 avril 2009 à 18:14
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
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
amouyi50
Messages postés
3
Date d'inscription
samedi 11 avril 2009
Statut
Membre
Dernière intervention
12 avril 2009
12 avril 2009 à 01:17
12 avril 2009 à 01:17
Petit up !
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
12 avril 2009 à 12:18
12 avril 2009 à 12:18
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
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