[C] Pointeur en argument de fonction
Résolu
kilian
Messages postés
8854
Statut
Modérateur
-
kilian Messages postés 8854 Statut Modérateur -
kilian Messages postés 8854 Statut Modérateur -
Bonjour,
En fait j'ai un ptit problème. J'ai un tableau d'entiers et une fonction dont le second argument est un pointeur sensé reccueillir l'adresse du tableau.
Mais gcc me renvoie cette erreur lors de la compilation:
Voici mon code:
En gros c'est un programme qui est sensé afficher deux fois le contenu d'un tableau. Une fois en utilisant le nom de sa variable, et une autre fois en utilisant un pointeur...
Je ne vois pas en quoi c'est un type pointeur incompatible....
Merci d'avance...
En fait j'ai un ptit problème. J'ai un tableau d'entiers et une fonction dont le second argument est un pointeur sensé reccueillir l'adresse du tableau.
Mais gcc me renvoie cette erreur lors de la compilation:
passage de l'argument n°2 de « print_pointeur_tab » d'untype pointeur incompatible
Voici mon code:
#include <stdio.h>
#define TWEN 20
int main(void)
{
unsigned short int tab[TWEN]={1,5,7,65,45,74,85,4,2,6,4,5,1,45,89,41,75,74,2};
int i;
printf("Votre tableau est constitué des éléments suivant:\n");
for (i=0;i<21;i++)
{
printf("%d ",tab[i]);
}
printf ("\n\n%d",tab);
// *ptab est un long int car l'adresse de tab ressemble souvent à -1073743776
void print_pointeur_tab(unsigned short champs,long int *ptab)
{
while (*ptab<champs)
{
printf("\n%d\n",*ptab++);
}
}
// C'est ici qu'il ya l'erreur dont je parle au dessus
print_pointeur_tab(TWEN,tab);
return 0;
}
En gros c'est un programme qui est sensé afficher deux fois le contenu d'un tableau. Une fois en utilisant le nom de sa variable, et une autre fois en utilisant un pointeur...
Je ne vois pas en quoi c'est un type pointeur incompatible....
Merci d'avance...
A voir également:
- [C] Pointeur en argument de fonction
- Fonction si et - Guide
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
1 réponse
Ah d'accord, un pointeur ne doit pas être du type de l'adresse, mais du même type que la variable à laquelle il fait référence...
Donc j'ai changé le type de *ptab en unsigned short int.
Ensuite le coup du while(*ptab<20) est à remplacer par un compteur avec for sans utiliser *ptab... Normal ça ne fait pas référence à l'indice du tableau en cours mais à la valeur à laquelle *ptab fait référence...
Pff c'est compliqué les pounteurs :-(
Voilà ce que ça donne maintenant:
Désolé pour le dérangement...
Donc j'ai changé le type de *ptab en unsigned short int.
Ensuite le coup du while(*ptab<20) est à remplacer par un compteur avec for sans utiliser *ptab... Normal ça ne fait pas référence à l'indice du tableau en cours mais à la valeur à laquelle *ptab fait référence...
Pff c'est compliqué les pounteurs :-(
Voilà ce que ça donne maintenant:
#include <stdio.h>
#define TWEN 20
int main(void)
{
unsigned short int tab[TWEN]={1,5,7,65,45,74,85,4,2,6,4,5,1,45,89,41,75,74,2};
int i;
printf("Votre tableau est constitué des éléments suivant:\n");
for (i=0;i<21;i++)
{
printf("%d ",tab[i]);
}
void print_pointeur_tab(unsigned short int champs,unsigned short int *ptab)
{
for (i=0;i<champs+1;i++)
{
printf("\n%d\n",*ptab++);
}
}
print_pointeur_tab(TWEN,tab);
return 0;
}
Désolé pour le dérangement...