Tableau/pointeur passer en parametre

Fermé
chahbane - 13 déc. 2010 à 15:44
 chah - 13 déc. 2010 à 20:01
Bonjour,

SVP je viens de programmer une petite application en langage C. je voulais utiliser une fonction pour saisir au clavier un tableau T dynamique a une dimension de taille n dont l'en tete est :
void remplir (int* T, int n)

j'ai rencontre pls erreurs. svp me completer la fonction et ce qu'il faut avoir dans le proramme principal (malloc...) et l'appel.
mer6666666666666666666666


A voir également:

2 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
13 déc. 2010 à 19:04
Quel mélange... un coup c'est 'int*, un coup c'est 'int[]'. Pourquoi pas mais apparemment tu ne suis pas.
A corriger (au moins):
- scanf("%d",t[i]); en &t[i] ou t+i,
- remplir(&A,n); en A.
Mais le compilateur doit le signaler !
Bonne continuation.
1
ohhh! mer6 mer6 mer6 1000 fois.
ms a propos int[] et int*, je voudrais utiliser les deux (passage par valeur et variable) dans le mémé programme car je suis débutant en langage C et je veux savoir la différence.
Pouvez-vous m'expliquer la difference svp et quel methode est plus rapide et conseillée.
0
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
13 déc. 2010 à 19:49
Le compilateur traitera de la même manière le passage par 'int*' que par 'int[]'; il n'y a donc pas de méthode plus rapide.
En 'C' il n'y a que la transmission par valeur qui existe. Dire que la transmission par adresse existe est une erreur, il s'agit en fait d'une transmission de la valeur... d'une adresse.
La différence entre un pointeur (int*) et un tableau (int[]) est (essentiellement) la suivante:
'int*' est un pointeur variable (au sens ou on peut modifier l'adresse vers laquelle il pointe),
'int[]' est un pointeur constant (il ne peut que pointer vers le tableau déclaré à l'initialisation).
Bonne réflexion.
0
Mer66666666 bcp...
0
lucieb31 Messages postés 345 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 28 juillet 2012 62
13 déc. 2010 à 16:39
P.e pourrai tu nous donner le code que tu avais écris pour qu'on corrige les erreurs.
0
#include <stdio.h>
#include <conio.h>


void remplir (int* t, int n)
{
int i;
for (i=0; i<n; i++)
{
printf(" Donner t[%i] : ",i);
scanf("%d",t[i]);
}
}

void saisie (int* n)
{
printf("Donner la taille du tableau : ");
scanf("%d",n);
}

void affichage (int t[], int n)
{
int i;
for (i=0; i<n; i++)
printf(" %d ",t[i]);
}

int* A;

main()
{
int n;
saisie(&n);
A=malloc(n*sizeof(int));
remplir(&A,n);
affichage(A,n);
getch();
}
0