Différence pointeur/tableau en C
amouyi50
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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.
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.
A voir également:
- Différence pointeur/tableau en C
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Difference tcp udp - Guide
- Difference million milliard - Accueil - Technologies
4 réponses
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)
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
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