[C] Pointeur en argument de fonction
Résolu
kilian
Messages postés
8675
Date d'inscription
Statut
Modérateur
Dernière intervention
-
kilian Messages postés 8675 Date d'inscription Statut Modérateur Dernière intervention -
kilian Messages postés 8675 Date d'inscription Statut Modérateur Dernière intervention -
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...
Configuration: Debian Sarge
A voir également:
- [C] Pointeur en argument de fonction
- Fonction si ou - Guide
- Pointeur souris - Guide
- Curseur Windows 10 : comment bien voir la souris à l'écran - Guide
- Fonction trier excel - Guide
- Fonction excel en anglais - 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...